Angular9:这两种分页实现有什么区别?
Angular 9: what is the difference between these two pagination implementation?
我是 angular 的新手,我尝试创建一个带有分页的 table,来自服务器的数据 returns,所以我不想把所有数据都带进来在一起(因为我可能有几千行以上),所以你更喜欢哪种类型的分页好?
我发现了这两个实现:
第一:
<mat-paginator [pageSizeOptions]="[5, 10, 25, 100]"></mat-paginator>
第二个:
<mat-paginator [length]="length"
[pageSize]="pageSize"
[pageSizeOptions]="pageSizeOptions"
(page)="pageEvent = $event">
</mat-paginator>
我觉得第二种更好,但我不知道怎么用。请帮助我并告诉我如何仅当我更改分页器时才能从服务器获取数据,例如在开始时它只给我带来 5 行当我转到下一页时它从服务器给我带来另外 5 行。
如果可以,请给我一个简单的例子或一个link解释得尽可能容易理解。
您在 table 数据源中的实现在这里很重要。你可以使用这个分页
<mat-paginator [pageSizeOptions]="[5, 10, 25, 100]"></mat-paginator>
如果你想在改变pagesize时获取数据,你可以定义如下代码。
pageIndex: number; pageSize: number;
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
@ViewChild(MatSort, { static: false }) sort: MatSort;
@ViewChild(MatTable, { static: false }) table: MatTable<any>;
ngAfterViewInit() {
setTimeout(() => {
this.pageIndex = this.paginator.pageIndex;
this.pageSize = this.paginator.pageSize;
this.paginator.page.subscribe(res => {
this.pageIndex = res.pageIndex;
this.pageSize = res.pageSize;
this.getTransactions();
});
this.getTransactions();
});
}
getTransactions() {
// Here you can get the data
this.dataSource.getData(this.pageIndex.toString(), this.pageSize.toString());
this.paginator.length = this.dataSource.dataLength;
}
参考文献:
我是 angular 的新手,我尝试创建一个带有分页的 table,来自服务器的数据 returns,所以我不想把所有数据都带进来在一起(因为我可能有几千行以上),所以你更喜欢哪种类型的分页好? 我发现了这两个实现: 第一:
<mat-paginator [pageSizeOptions]="[5, 10, 25, 100]"></mat-paginator>
第二个:
<mat-paginator [length]="length"
[pageSize]="pageSize"
[pageSizeOptions]="pageSizeOptions"
(page)="pageEvent = $event">
</mat-paginator>
我觉得第二种更好,但我不知道怎么用。请帮助我并告诉我如何仅当我更改分页器时才能从服务器获取数据,例如在开始时它只给我带来 5 行当我转到下一页时它从服务器给我带来另外 5 行。
如果可以,请给我一个简单的例子或一个link解释得尽可能容易理解。
您在 table 数据源中的实现在这里很重要。你可以使用这个分页
<mat-paginator [pageSizeOptions]="[5, 10, 25, 100]"></mat-paginator>
如果你想在改变pagesize时获取数据,你可以定义如下代码。
pageIndex: number; pageSize: number;
@ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;
@ViewChild(MatSort, { static: false }) sort: MatSort;
@ViewChild(MatTable, { static: false }) table: MatTable<any>;
ngAfterViewInit() {
setTimeout(() => {
this.pageIndex = this.paginator.pageIndex;
this.pageSize = this.paginator.pageSize;
this.paginator.page.subscribe(res => {
this.pageIndex = res.pageIndex;
this.pageSize = res.pageSize;
this.getTransactions();
});
this.getTransactions();
});
}
getTransactions() {
// Here you can get the data
this.dataSource.getData(this.pageIndex.toString(), this.pageSize.toString());
this.paginator.length = this.dataSource.dataLength;
}
参考文献: