Angular Material 设计上的分页 - 显示页码或删除行数

Pagination on Angular Material Design - Show page numbers or remove the row count

Angular6/7,Material设计。

由于我无法访问项目总数,因此项目计数无关紧要(屏幕截图中的框)。

如何完全删除项目计数?或者显示我当前所在的页面而不是项目数?

<mat-paginator
    itemsPerPageLabel="Items per page"
    (page)="changePage()"
    [length]="resultsLength"
    [pageSizeOptions]="[10, 100]">
</mat-paginator>

通过在全局中插入删除范围标签CSS

.mat-paginator-range-label {
    display: none;
}

改为插入页码(当然基于您的 API - 您可能没有页面信息!)通过插入您的组件

ngAfterViewChecked() {
        const list = document.getElementsByClassName('mat-paginator-range-label');
        list[0].innerHTML = 'Page: ' + this.page.toString();
}

当然还要删除上面的 CSS 规则!

Paginator 现在看起来像这样

我刚刚修改了 Johan Faerch 的解决方案以更适合您的问题。

  1. Create 方法有两个参数,一个用于 matpaginator,另一个用于 HTMLCollectionOf

    列表
    paginatorList: HTMLCollectionOf<Element>;
    
    onPaginateChange(paginator: MatPaginator, list: HTMLCollectionOf<Element>) {
         setTimeout((idx) => {
             let from = (paginator.pageSize * paginator.pageIndex) + 1;
    
             let to = (paginator.length < paginator.pageSize * (paginator.pageIndex + 1))
                 ? paginator.length
                 : paginator.pageSize * (paginator.pageIndex + 1);
    
             let toFrom = (paginator.length == 0) ? 0 : `${from} - ${to}`;
             let pageNumber = (paginator.length == 0) ? `0 of 0` : `${paginator.pageIndex + 1} of ${paginator.getNumberOfPages()}`;
             let rows = `Page ${pageNumber} (${toFrom} of ${paginator.length})`;
    
             if (list.length >= 1)
                 list[0].innerHTML = rows; 
    
         }, 0, paginator.pageIndex);
    }
    
  2. 如何调用这个方法?你可以在 ngAfterViewInit()

    上初始化它
    ngAfterViewInit(): void {
       this.paginatorList = document.getElementsByClassName('mat-paginator-range-label');
    
       this.onPaginateChange(this.paginator, this.paginatorList);
    
       this.paginator.page.subscribe(() => { // this is page change event
         onPaginateChange(this.paginator, this.paginatorList);
       });
    }
    
  3. 将此方法包含在您的 css 文件中(注意:不要包含在主 styles.css 文件中)

    .mat-paginator-range-label {
        display: none;
    }
    
  4. 除了单击 mat paginator 上的导航按钮之外,您可以在需要更改页码详细信息的任何地方调用 onPaginateChange(this.paginator, this.paginatorList) 函数。

结果如下所示