Сортировать по конкретному пользовательскому типу в угловой - PullRequest
0 голосов
/ 24 октября 2019

У меня есть список элементов, одним из свойств которых является тип, и его значения: {footprint, platform, roving} Я пытаюсь отсортировать список по следующим критериям: platform> footprint> roving

Поскольку след алфавитного порядка находится перед платформой, сортировка по полю не работает должным образом, и я не знаю точно, как реализовать обратный вызов пользовательской сортировки для этого. Я использую https://vadimdez.github.io/ngx-order-pipe/ модуль и вот моя попытка:

template

...
 <tr *ngFor="let platform of platforms | orderBy: order: false: true: sortCriteria; let i = index;">
...
...

component

...
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 Ответ

1 голос
/ 24 октября 2019

Вы можете создать «массив заказов» и заполнить его правильным порядком, который вы хотите использовать. Затем используйте простой код:

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

sortCriteria(itemA, itemB) {
    return typesOrder.indexOf(itemA.type) < typesOrder.indexOf(itemB.type);
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...