【发布时间】:2019-06-19 19:28:27
【问题描述】:
我有一个垫表,每页最多可显示 100 个条目。起初,我在底部有一个垫子分页器,效果很好。现在我被要求在表格顶部设置一个分页器,在表格底部设置另一个分页器,因此如果用户正在寻找位于的条目,则无需一直向下滚动即可到达分页器顶端。
问题是两个分页器必须链接到同一个数据源。
我尝试为每个人提供不同的 id,使用 ViewChild 获取它们并将它们分配给相同的数据源,但它只适用于其中一个。
main.component.ts:
flights: Flight[] =[];
dataSource = new MatTableDataSource<Flight>(this.flights);
@ViewChild('PAGINATOR') paginator: MatPaginator;
@ViewChild('OTROPAGINATOR') paginatorOtro: MatPaginator;
main.component.html:
<mat-paginator #PAGINATOR (page)="pageEvent = handlePage($event)"
[length]="length" [pageSizeOptions]="[25, 50, 100]" showFirstLastButtons>
</mat-paginator>
<table mat-table ...> ... </table>
<mat-paginator #OTROPAGINATOR (page)="pageEvent = handlePage($event)"
[length]="length" [pageSizeOptions]="[25, 50, 100]" showFirstLastButtons>
</mat-paginator>
将分页器链接到数据源:
this.dataSource = new MatTableDataSource<Flight>(this.flights);
this.dataSource.paginator = this.paginator;
this.dataSource.paginator = this.paginatorOtro;
有人可以指导我吗?
【问题讨论】:
-
我能想到的最好的方法是thisstackblitz。顶部分页器与底部分页器完美同步,不幸的是,底部分页器仅更改顶部分页器的设置,但不会更新表格。也许它对你有帮助。总体计划是有两个数据源,每个分页器一个,然后只同步分页器。
-
@FabianKüng 我没有考虑创建 2 个数据源。我想现在我只需要找出如何根据第二个分页器的更改正确更新第一个分页器和表格内容,这样我就可以模拟两者都适用于同一个表格。谢谢!
-
如果您找到方法,请务必更新帖子,我很想知道您是如何做到的!
-
@FabianKüng 我找到了一种复制所需行为的方法,使用一些具有属性和方法的逻辑(来自 angular material paginator api)。只是有一点限制......我会发布一个答案并解释它。
标签: angular angular-material paginator mat-table