我正在向表中添加一行,以便添加新记录,并且无论排序标题(asc,desc或无),我都希望将该行保持在顶部。
如果未定义顺序或asc,则该行位于顶部,但是单击desc顺序时,该行将到达底部。
关于如何保持空值(数据源中的新行对象具有用于列排序的空值)始终在顶部的任何想法吗?
订购“无”可以: https://i.stack.imgur.com/J3Ou1.png
Order Asc也可以: https://i.stack.imgur.com/xFolC.png
但是,订单描述不正确: https://i.stack.imgur.com/bsksj.png
答案 0 :(得分:0)
角度MatSortModule具有一个名为“ deregister”的属性。您可以尝试将此属性添加到要从MatSortables中删除的行中
答案 1 :(得分:0)
当值为null
时,可以通过覆盖排序机制,用在Z
之后排序的字符(例如omega(Ω))“替换”它。
this.dataSource.sortingDataAccessor = (item, key) => item[key] || 'Ω';
排序机制将返回键/值对,但是当找不到值时,它将返回omega字符,但是仅用于排序,因此它不会显示在表中
答案 2 :(得分:0)
我有一个类似的问题,那就是“单击排序按钮时忽略空值,以便始终将它们打印在表的末尾”。 我这样解决了这个问题:
以下是代码示例:
this.rankingData = new MatTableDataSource();
this.rankingData.sortingDataAccessor = (item, property) => {
if(null == item[property]) {
if("desc" == this.sort.direction) return '\u0000'+'\u0000'+'\u0000';
return '\uFFFF'+'\uFFFF'+'\uFFFF';
}
return item[property];
};