Я пытаюсь создать пользовательскую трубку в Angular 2, которая сортирует массив объектов. Я получил небольшую помощь от this post. Однако я не могу заставить это работать.Реализация асинхронной сортировочной трубы в Angular 2
Моя труба выглядит следующим образом:
@Pipe({
name: "orderByAsync",
pure: false
})
export class AsyncArrayOrderByPipe {
private _promise : Promise<Array<Object>>;
private _output: Array<Object>;
transform(promise: Promise<Array<Object>>, args: any): Array<Object>{
var _property : string = "";
var _descending : boolean = false;
this._property = args[0]["property"] || "";
this._descending = args[0]["descending"] || false;
if(!this._promise) {
this._promise = promise.then((result) => {
result.sort((a: any, b: any) => {
if (a[this._property] < b[this._property]) return (this._descending ? 1: -1);
else if (a[this._property] > b[this._property]) return (this._descending ? -1: 1);
else return 0;
});
this._output = result;
});
}
return this._output;
}
}
Использование трубы будет выглядеть следующим образом:
<div *ngFor="#c of countries | orderByAsync">{{c.name}}</div>
Это как вид никогда не уведомляется о том, что обещание решить и данные были вернулся.
Что мне не хватает?
Можете ли вы создать быстрый bin, поэтому фрагмент можно воспроизвести. –