Die Implementierung eines asynchronen Sortierung Rohr in den Winkel-2

Ich versuche, erstellen Sie eine benutzerdefinierte Rohr im Winkel 2, die sortiert ein array von Objekten. Ich sammelte ein wenig Hilfe von dieser Beitrag. Aber ich kann nicht scheinen, um diese arbeiten.

Meine pipe sieht so 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;
  }
}

Den Einsatz des Rohr würde dann so Aussehen:

<div *ngFor="#c of countries | orderByAsync">{{c.name}}</div>

Es ist wie der Blick wird nie benachrichtigt, dass das Versprechen aufgelöst hat und die Daten zurückgegeben wurde.

Was bin ich?

  • Kannst du bitte erstellen Sie einen quick-bin-so das snippet kann gespielt werden um.
InformationsquelleAutor RHarris | 2016-03-10
Schreibe einen Kommentar