mat-paginator 长度不起作用。无法设置它

问题描述 投票:0回答:3

我试图在点击分页时调用API。最初,我有 静态设置长度并且工作正常。我能够做一个 分页API调用。然后我尝试动态设置长度 也一样,它也有效,但后来,它停止工作了。请 帮我指出我的错误。 我正在 this.totalEmp 中设置内容的长度,并且也能够在 html 端打印它,但是当我尝试设置时 [长度] 的垫分页器。它对我不起作用。我尝试设置 mat-paginator 中也有#paginator,但没有看到任何变化。

Below is my implementation



**HTML:**
<mat-paginator 
    [length]="totalEmp"
    [hidden]="normalPagination"
    [pageSize]="2" 
    [pageSizeOptions]="[2]"
    [pageIndex]="pageIndex"
    (page)="pageEvent = getDataByPagination($event)"></mat-paginator>

**.ts file Code**

export class EmpComponent implements OnInit {
 
         dataSource: any;
         totalEmp: number=0;
         normalPagination: boolean;
        
        @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
         @ViewChild(MatSort, { static: true }) sort: MatSort;
        
        ngOnInit() {
            this.getTableContentCount();
          }
        
        
         getTableContentCount() {
            this.myService.CountService().subscribe(
              (response: any) => {
                if (response) {
           
                  this.totalEmp = response;
                  this.getServerData(0,this.totalEmp);
                }
              },
              (error: any) => { }
            );
          }
        
        public getDataByPagination(event?: PageEvent) {
    this.myService.getPaginationService(event).subscribe(
      response => {
        if (response) {
          this.showLoader=true;
          this.normalPagination=false;
          this.total = this.totalEmp;      
          this.allData=response;
          this.dataSource = new MatTableDataSource(this.allData);
          this.dataSource.paginator = this.paginator;
          this.dataSource.sort = this.sort;
          this.showLoader=false;
        }
      },
      error => {
        // handle error
      }
    );
    return event;
  }
angular pagination angular-material angular9 mat-pagination
3个回答
8
投票

错误:您正在每个请求中初始化以下几行。

this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort;

解决方案: 根据您的最佳需要,通过设置一些条件或使用

ngAfterViewInit
方法仅初始化这些行一次。


3
投票

使用

@ViewChild(MatPaginator, { read: true }) paginator: MatPaginator;
让分页器工作

https://www.freakyjolly.com/angular-material-12-server-side-table-pagination-example/#comment-23556


0
投票

read: true
如何在
@ViewChild
中为
MatPagination
工作?

© www.soinside.com 2019 - 2024. All rights reserved.