【发布时间】:2021-08-20 04:40:03
【问题描述】:
我需要一些方法来跟踪材料表中当前正在显示的项目(行)。根据documentation,<mat-table> 建立在<cdk-table> 之上,赋予它viewChange 属性。我的理解是,只要显示的行集发生更改,就会触发 BehaviorSubject。例如,可能总共有 400 行,但由于分页,屏幕上只有 20 行。当用户点击进入下一页时,这应该会导致viewChange 发出。有谁知道如何使用这个属性?我尝试了以下代码,但它只触发一次,值为{ start: 0, end: 1.7976931348623157e+308 }。
component.ts:
allTasks = new MatTableDataSource<Task>([]);
@ViewChild(MatTable) table: MatTable<any>;
@ViewChild(MatPaginator) paginator: MatPaginator;
@ViewChild(MatSort) sorter: MatSort;
ngAfterViewInit() {
this.allTasks.paginator = this.paginator;
this.allTasks.sort = this.sorter;
this.table.viewChange.asObservable().subscribe(val => {
console.log(`${val.start} - ${val.end}`);
});
}
component.html:
<mat-table
matSort
[dataSource]="this.allTasks"
>
...
</mat-table>
【问题讨论】: