mat-paginator change the placing of mat-paginator-

2019-08-20 14:16发布

I have a simple mat-table with mat-paginator.

By default design it looks like this: enter image description here

I would like to change the placing of the range label and put it between the navigation buttons, like this:

enter image description here

Basically, I need to move the div.mat-paginator-range-label an element from the top of this container between button.mat-paginator-navigation-previous and button.mat-paginator-navigation-next.

enter image description here

Any idea of how to do it? Thanks.

3条回答
放荡不羁爱自由
2楼-- · 2019-08-20 15:00

Taras, thank you for answer! This is what i really need! I have implemented by your recommendation, and have got result like this:

Implemented with custom after range label

查看更多
贼婆χ
3楼-- · 2019-08-20 15:03

Actually because the "mat-paginator-container" uses flexbox you can easily modify the default placing of all the components just with a custom CSS code. For instance for me:

// 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;
    }
}
查看更多
Melony?
4楼-- · 2019-08-20 15:14

Ok, I create a solution for how to do it. I use a Renderer2 to do the manipulation with DOM, and it looks like this:

@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'));
    }

In my case this._renderer is an instance of Renderer2, and also the HTML code with ViewChild decorator.

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

If someone knows the better solution how to do it, please let me know. Otherwise, I hope my answer will help you with a similar task. Thanks

查看更多
登录 后发表回答