我使用带排序的 mat 表,我想在其中对特定列设置默认排序。
这适用于普通属性但不适用于嵌套属性。
这是我的 table
<table mat-table [dataSource]="dataSource" multiTemplateDataRows
matSort matSortActive="break" matSortDirection="asc"
class="mat-elevation-z4 w-100">
我的嵌套排序
this.dataSource.sort = this.sort;
this.dataSource.sortingDataAccessor = (item, property) => {
switch(property) {
case 'break': return item.break.start;
default: return item[property];
}
};
此外,这种嵌套排序很好,当您手动单击标题进行排序时,它会按照我的预期进行,但默认情况下它不会排序,只显示排序箭头。
这就是它在页面加载时的样子:
这里是对应的stackblitz .
最佳答案
我在 5 月份研究时,初始排序无法正常工作。
在我的例子中,有必要编写我自己的 setSortHeader
函数,该函数在获取数据后执行。
setSortHeader() {
this.sort.active = 'break';
this.sort.direction = 'desc';
this.sort.sortChange.emit({ active: this.sort.active, direction: this.sort.direction });
const sortHeader = this.sort.sortables.get('break');
if (sortHeader) sortHeader['_setAnimationTransitionState']({ toState: 'active' });
}
我不确定此代码是否仍然必要,但在我的情况下有效。
关于angular - Angular Material 中带有嵌套对象的默认排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58322447/