角度材质表 renderRows() 不适用于 matSort

1 angular-material angular mat-table

我正在对 mat-table 进行排序和删除/添加。

我一直在读这篇文章,无需排序即可正常工作。

当我在表上使用mat-table和属性时,停止工作。matSortrenderRows()

堆栈闪电战

一旦我删除排序属性,它就会再次起作用。

我找到了一个替代解决方案,但最好知道我是否做错了什么,是否有其他人使其工作,这是一个错误还是预期的行为?

不起作用:

delete(index: number): void {
  this.dataSource.data.splice(index, 1);
  this.table.renderRows();
}
Run Code Online (Sandbox Code Playgroud)

有效:

delete(id: number): void {
  this.dataSource.data = this.dataSource.data.filter( (item: any) => item.id !== id);
}
Run Code Online (Sandbox Code Playgroud)

小智 7

在按项目索引 splice() 之后,您应该更新数据源。

delete(id: number, index: number): void {
    this.dataSource.data.splice(index, 1);
    this.table.renderRows();
    this.dataSource._updateChangeSubscription();  // <-- Refresh the datasource
  }
Run Code Online (Sandbox Code Playgroud)

工作示例链接Stackblitz