垫表数据刷新

时间:2018-12-12 06:49:44

标签: angular angular-material mat-table

我有一个带有排序和分页器的垫子桌子。我的组件看起来像这样,如ngOnInit所示,我注册了一个事件处理程序,该事件处理程序调用populateAlertTableSource功能。 调用此函数时,确实会刷新表中的数据,但不会刷新数据,除非我将鼠标悬停在表上(或单击分页器)。当我从表格中删除一行时也会发生这种情况-该行不会消失并且分页器不会刷新,直到我将鼠标悬停在表格上(或单击分页器)。当我手动在其声明中填充数据源时,似乎没有发生,并且Pagiantor当场进行了更新。

navigate()

1 个答案:

答案 0 :(得分:0)

很难说出没有堆叠闪电或类似情况的确切问题是什么。

但是我确实记得前一段时间有一个类似的问题,对我来说解决的问题是在模板的length元素上显式设置mat-paginator

在您的组件中:

public _alertsDataSourceLength: number;

...

populateAlertTableSource(message: any) {
    this.AlertsCollection = message
    this._alertsDataSourceLength = this.AlertsCollection.length; // new
    this.alertsDataSource.data = this.AlertsCollection;
    this.alertsDataSource.paginator = this.paginator;
    this.alertsDataSource.sort = this.alertSort;
    this.alertsTable.renderRows();
    this.refresh();
}

在您的模板中:

<!-- set the length explicitly -->
<mat-paginator [pageSize]="10"
               [length]="_alertsDataSourceLength"
               [pageSizeOptions]="[5, 10, 20]"
               [showFirstLastButtons]="true">
</mat-paginator>