Как отсортировать переведенный список в Angular 5 (ngx-translate)
Допустим, у меня есть следующий простой html-код (Angular 5, ngx-translate):
<div>
<div *ngFor="let item of items">
<div>{{item | translate}}</div>
</div>
</div>
Я получаю список "элементов" из бэкэнда через http-get.
Мой вопрос: как я могу отсортировать список элементов по их переведенным значениям?
Пример:
Предметы:
[ "lbl_a", "lbl_b", "lbl_c" ]
с переводами:
{
"lbl_a": "tree",
"lbl_b": "zoo",
"lbl_c": "car"
}
Тогда я хочу отобразить:
car
tree
zoo
(отсортировано по алфавиту)
3 ответа
Вы можете создать трубу или отсортировать элементы, когда получите их.
this.service.getTranslatedItems().subscribe(items => {
this.items = items.sort((a, b) => a.localeCompare(b));
});
С трубой
transform(items: string[]) {
return items.sort((a, b) => a.localeCompare(b));
}
И в вашем HTML (только труба)
<div *ngFor="let item of items | yourPipeName">
<div>{{item | translate}}</div>
</div>
Вы не можете использовать встроенные каналы для фильтрации или сортировки данных.
Но вы можете достичь этого, написав свой собственный канал. Просто переведите, а затем отсортируйте данные.
Вы можете отсортировать по трубе
<div *ngFor="let item of items | orderBy : 'columnname']"">
<div>{{item | translate}}</div>
</div>