我有一个元素列表,该元素的一个属性是类型及其值:{足迹,平台,粗纱} 我正在尝试按照以下条件对列表进行排序: 平台>足迹>粗纱
由于字母顺序足迹在平台之前,因此按字段排序无法按预期方式工作,我也不知道如何实现自定义排序回调。 我正在使用https://vadimdez.github.io/ngx-order-pipe/模块,这是我的尝试:
...
<tr *ngFor="let platform of platforms | orderBy: order: false: true: sortCriteria; let i = index;">
...
...
...
order: string[] = ['type', 'name'];
...
sortCriteria(itemA, itemB) {
if (itemA.type == 'platform') return 1;
if (itemB.type == 'platform') return -1;
if ((itemA.type == 'footprint') && (itemB.type == 'roving')) return 1
if (itemA.type == 'roving') return -1
}
...
我会感谢一些想法来使这种工作按预期进行。
答案 0 :(得分:1)
您可以创建一个“订单数组”,并用您要使用的正确订单填充它。然后使用简单的代码:
let typesOrder = ['platform', 'footprint', 'roving'];
sortCriteria(itemA, itemB) {
return typesOrder.indexOf(itemA.type) < typesOrder.indexOf(itemB.type);
}