2016-01-27 1 views
0

Я использую машинописные и угловые2. У меня есть трубка, которая фильтрует список результатов. Теперь я хочу сортировать этот список в алфавитном порядке и т. Д. Как мне это сделать?Angular2 - Как лучше всего сортировать список труб?

+0

Проверить здесь: http://stackoverflow.com/questions/35176188/angular2-sorting-pipe-with-object-array –

ответ

5

Вы могли бы реализовать пользовательскую трубу для этого, который использует sort метод массивов:

import { Pipe } from "angular2/core"; 

@Pipe({ 
    name: "sort" 
}) 
export class ArraySortPipe { 
    transform(array: Array<string>, args: string): Array<string> { 
    array.sort((a: any, b: any) => { 
     if (a < b) { 
     return -1; 
     } else if (a > b) { 
     return 1; 
     } else { 
     return 0; 
     } 
    }); 
    return array; 
    } 
} 

и использовать затем эту трубу за счет использования труб цепочки:

<li *ngFor="list | filter | sort"> (...) </li> 

Это простой пример для массивов с строковыми значениями, но вы можете иметь некоторую расширенную обработку сортировки (на основе атрибутов объекта в случае массива объектов, на основе параметров сортировки, ...).

Для этого напишите вот так: https://plnkr.co/edit/WbzqDDOqN1oAhvqMkQRQ?p=preview.

Надеется, что это помогает, Тьерри

+0

Это для алфавитного порядка? – AngularM

+0

@AngularM вы должны попробовать, не так ли? –

+0

Я обновил свой ответ в алфавитном порядке и предоставил plunkr ... –

Смежные вопросы