按特定的自定义类型排序

时间:2019-10-24 10:11:00

标签: angular sorting

我有一个元素列表,该元素的一个属性是类型及其值:{足迹,平台,粗纱} 我正在尝试按照以下条件对列表进行排序:  平台>足迹>粗纱

由于字母顺序足迹在平台之前,因此按字段排序无法按预期方式工作,我也不知道如何实现自定义排序回调。 我正在使用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
  }    
...

我会感谢一些想法来使这种工作按预期进行。

1 个答案:

答案 0 :(得分:1)

您可以创建一个“订单数组”,并用您要使用的正确订单填充它。然后使用简单的代码:

let typesOrder = ['platform', 'footprint', 'roving'];

sortCriteria(itemA, itemB) {
    return typesOrder.indexOf(itemA.type) < typesOrder.indexOf(itemB.type);
}