Согласно документации Angular , труба keyvalue
сортирует элементы по порядку key
по умолчанию.Вы можете предоставить функцию сравнения для изменения порядка сортировки, но она учитывает только свойства key
и value
, а не порядок ввода.
Например, следующие функции сравнения сортируют элементы по возрастанию значенияпорядок, и в обратном порядке ключей, соответственно:
valueAscOrder = (a: KeyValue<number,string>, b: KeyValue<number,string>): number => {
return a.value.localeCompare(b.value);
}
keyDescOrder = (a: KeyValue<number,string>, b: KeyValue<number,string>): number => {
return a.key > b.key ? -1 : (b.key > a.key ? 1 : 0);
}
применительно к keyvalue
трубе:
<div *ngFor="let item of object | keyvalue: valueAscOrder">
{{item.key}} : {{item.value}}
</div>
<div *ngFor="let item of object | keyvalue: keyDescOrder">
{{item.key}} : {{item.value}}
</div>
См. этот стекаблиц для демонстрации.