Angular 如何以编程方式触发mat表排序?
我有一个表,它使用mat sort和一个定制的sortingDataAccessor来对元素中的一些嵌套数据进行排序(不确定是否相关)。这很好,数据被排序,问题发生在异步更新数据时,因为现在数据不再是有序的,因为它被更改了,而表没有更新它的顺序 那么,如何通过编程触发排序呢?或者更确切地说,即使更新了Angular 如何以编程方式触发mat表排序?,angular,angular-components,mat-table,Angular,Angular Components,Mat Table,我有一个表,它使用mat sort和一个定制的sortingDataAccessor来对元素中的一些嵌套数据进行排序(不确定是否相关)。这很好,数据被排序,问题发生在异步更新数据时,因为现在数据不再是有序的,因为它被更改了,而表没有更新它的顺序 那么,如何通过编程触发排序呢?或者更确切地说,即使更新了dataSource.data,如何始终保持表的排序 Stackblitz展示问题: 谢谢 我不确定这是否是官方方式(可能不符合),但在重新分配以前的MatSort之前,将sort属性设置为MatT
dataSource.data
,如何始终保持表的排序
Stackblitz展示问题:
谢谢 我不确定这是否是官方方式(可能不符合),但在重新分配以前的
MatSort
之前,将sort
属性设置为MatTableDataSource
为null似乎可以做到这一点
@ViewChild(MatSort, {static: true}) sort: MatSort;
//Change table data here...
//Trigger sort manually
this.dataSource.sort = null;
this.dataSource.sort = this.sort;
注意:根据此注释,角度材质不寻找对基础源的更改
将数组传递给表时,仅当
数组引用已更改,因为它基于
使用不可变的数据数组
一个简单的解决方法是在基础数据发生更改时重新分配源的数据
属性
this.datasource.data = [...ELEMENT_DATA];//For your stackblitz