mat 分页器将所有数据加载到 mat table ANGULAR 中的第一页

mat paginator loading all data to first page in mat table ANGULAR

我正在从后端 asp.net 核心 c# API 加载 JSON 数据到 ANGULAR material table 但问题是整个 100 JSON 行数据加载到第一页我设置了分页器,如下所示:

<mat-paginator showFirstLastButtons [pageSizeOptions]="[25, 50, 100]"></mat-paginator>

如您所见,分页器应加载前 25 行,但它会在第一页加载所有 100 行。下面是我调用 ASP.NET CORE C# web API 以将 JSON 数据传输到垫子 table.

的方法
  @ViewChild(MatPaginator) paginator: MatPaginator;
  @ViewChild(MatSort) sort: MatSort;
    dataSource : MatTableDataSource<BugsData>;
      selection = new SelectionModel<BugsData>(true, []);
      bugsData:any;
        ngOnInit(){
        this.spinner.show();
        this.http.get('https://localhost:44318/api/Bugs/ListofBugs?projectid='+this.route.snapshot.params['id']+'').subscribe(
            (data:any) => {
              if(data.message!=null){
                this.snackbar.open(data.message, '✖',{
                  duration:4000,
                  horizontalPosition:'center',
                  verticalPosition:'top'
                }),
                this.spinner.hide()
              }else{
                console.log(data);
                this.bugsData=data,
                this.dataSource = new MatTableDataSource<BugsData>(this.bugsData),
                this.dataSource.sort = this.sort,
                this.dataSource.paginator = this.paginator,
                this.spinner.hide()
              }
            }
          )
      
    
        }
        }

这段代码有什么问题?

验证 this.paginator 是否在 this.dataSource.paginator = this.paginator; 之前初始化。我假设它可能由于视图中的条件而没有被初始化。

MatTableDataSource 之后立即初始化 MatPaginatorMatSort 如果它们未初始化,则会导致问题。

你能尝试初始化分页器并在超时后排序,让视图初始化它们吗?

this.dataSource = new MatTableDataSource<BugsData>(this.bugsData);

setTimeout(() => {
  this.dataSource.sort = this.sort;
  this.dataSource.paginator = this.paginator;
}, 0);

这样做

// directly create the datasource       
dataSource = new MatTableDataSource<BugsData>();

constructor(){}

ngAfterViewInit() {
// this part MUST be done in afterviewinit
  this.dataSource.sort = this.sort;
  this.dataSource.paginator = this.paginator;
}

在您的订阅中,您只需这样做:

this.dataSource.data = this.bugsData