我有一个带有Mat表格的angular 6应用程序。该表的数据如下填充。排序适用于字段theme_minimal
和position
,但不适用于name
对象的一部分weight
和symbol
。我也尝试过在detail
和detail.weight
中命名displayedColumns
之类的列,但是没有运气。请告知我我做错了什么?
matColumnDef
模板
const ELEMENT_DATA: PeriodicElement[] = [
{position: 1, name: 'Hydrogen', detail: {weight: 4.0026, symbol: 'He'}},
{position: 2, name: 'Helium', detail: {weight: 4.0026, symbol: 'He'}},
]
displayedColumns: string[] = ['position', 'name', 'weight', 'symbol'];
这是该问题的stackblitz网址
https://stackblitz.com/edit/angular-kumdeq
答案 0 :(得分:2)
使用sortingDataAccessor,
允许通过覆盖sortingDataAccessor进行排序自定义, 定义如何访问数据属性。
在ngOnInit内添加以下代码段:
this.dataSource.sortingDataAccessor = (item, property) => {
switch (property) {
case 'weight': return item.detail.weight;
case 'symbol': return item.detail.symbol;
default: return item[property];
}