mat-paginator 改变 mat-paginator-range-label 的位置

mat-paginator change the placing of mat-paginator-range-label

我有一个简单的 mat-tablemat-paginator

默认设计如下:

我想更改范围标签的位置并将其放在导航按钮之间,如下所示:

基本上,我需要将 div.mat-paginator-range-label 元素从该容器的顶部移动到 button.mat-paginator-navigation-previousbutton.mat-paginator-navigation-next 之间。

知道怎么做吗? 谢谢。

好的,我创建了一个解决方案来说明如何做。 我使用 Renderer2DOM 进行操作,它看起来像这样:

@ViewChild("paginator", {read: ElementRef}) paginator: ElementRef;

ngAfterViewInit(): void {
        this._renderer.insertBefore(
            this.paginator.nativeElement.querySelector('.mat-paginator-navigation-next.mat-icon-button').parentNode,
            this.paginator.nativeElement.querySelector('.mat-paginator-range-label'),
            this.paginator.nativeElement.querySelector('.mat-paginator-navigation-next.mat-icon-button'));
    }

在我的例子中,this._rendererRenderer2 的一个实例,也是带有 ViewChild 装饰器的 HTML 代码。

<mat-paginator #paginator [pageSizeOptions]="[5, 10, 20]" showFirstLastButtons></mat-paginator>

如果有人知道更好的解决方法,请告诉我。 否则,我希望我的回答能帮助您完成类似的任务。 谢谢

实际上,因为 "mat-paginator-container" 使用 flexbox,您只需使用自定义 CSS 代码即可轻松修改所有组件的默认放置。例如对我来说:

// override material paginator
::ng-deep .mat-paginator {
    .mat-paginator-container {
        justify-content: center;
    }

    // override material paginator page switch
    .mat-paginator-range-label {
        order: 2;
    }

    .mat-paginator-navigation-previous {
        order: 1;
    }
    .mat-paginator-navigation-next {
        order: 3;
    }
}