【发布时间】:2019-09-04 13:58:08
【问题描述】:
在挪威和丹麦字母中,挪威/丹麦字符的正确顺序是:
- Æ
- Ø
- 埃
但是,MatSort 对这些字符使用 Unicode 顺序:
- 埃 (197)
- Æ (198)
- Ø (216)
能否以某种方式实施排序规则来解决这个问题?
这是一个堆栈闪电战,其中包含一个可以按“No”排序的表格。和“名称”:
https://stackblitz.com/edit/angular-an1uqc-8mdqns
这是表格中的数据:
{position: 1, name: 'Alpha', description: 'Test123'},
{position: 2, name: 'Bravo', description: '0'},
{position: 3, name: 'Charlie', description: 'aaa'},
{position: 4, name: 'Delta', description: ''},
{position: 5, name: 'Echo', description: '1'},
{position: 6, name: 'Foxtrot', description: '2'},
{position: 7, name: 'ÆGamma', description: ''},
{position: 8, name: 'ØHotel', description: '3'},
{position: 9, name: 'ÅIndigo', description: '1000'},
];
根据挪威/丹麦字母表对最后三个项目(ÆGamma、ØHotel 和 ÅIndigo)进行排序的正确方法是:
- Æ伽玛
- Ø酒店
- Å靛蓝
但 MatSort 对这些字符使用 Unicode 数字并改为这样排序:
- Å靛蓝 (197)
- Æ伽玛 (198)
- Ø酒店 (216)
感谢阅读! :]
【问题讨论】:
-
您将需要利用 matSortChange 事件来实现自定义排序算法。官方文档示例展示了如何使用 matSortChange beta-angular-material-io.firebaseapp.com/components/sort/…
-
我刚刚检查了 JavaScript 对这些语言的本地化排序的支持,语言代码 'da' 为您提供了您想要的排序,但 'no' 没有 - 使用 'no',排序是
["ÆGamma", "ÅIndigo", "ØHotel"]. -
@kshetline 是否可以通过 MatSort 使用本地化排序?
-
据我所知,只有@Alexander Staroselsky 的建议可以帮助您做到这一点。
标签: angular typescript sorting angular-material collation