Ich versuche, eine benutzerdefinierte Pipe in Angular 2 zu erstellen, die ein Array von Objekten sortiert. Ich habe ein wenig Hilfe von this post gesammelt. Jedoch kann ich nicht scheinen, dass das funktioniert.Implementieren einer asynchronen Sortierröhre in Angular 2
Mein Rohr sieht wie folgt aus:
@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;
}
}
Die Verwendung des Rohres würde wie folgt aussehen:
<div *ngFor="#c of countries | orderByAsync">{{c.name}}</div>
Es ist wie der Blick nie mitgeteilt wird, dass das Versprechen gelöst hat und Daten haben ist zurückgekommen.
Was fehlt mir?
Können Sie bitte eine schnelle erstellen bin so, dass das Snippet herum gespielt werden kann. –