2016-10-28 2 views
6

Ich habe eine Sammlung von Modellen. In Vorlage verwende ich RohrAngular 2 Rohr Triggerung

In jeder Komponente habe ich einen Timer für Update-Daten. Aber wenn das Modell aktualisiert wird, wurde Pipe nicht erneut ausgeführt. Gibt es eine Möglichkeit, Rohr zu zwingen oder etwas eckigen Weg in dieser Situation zu zwingen.

In Kartenansicht habe ich einen Timer, der Kartenvariable aktualisiert. Aber Angular nicht diese Veränderungen fangen für Rohr Auslösung

+0

Mögliches Duplikat zu verwenden [NgFor nicht aktualisiert Daten mit Rohr in Angular2] (http:. // stackoverflow.com/questi ons/34456430/ngfor-doesnt-update-data-mit-pipe-in-angular2) – Clint

Antwort

13
  • Sie können eine Kopie von cards als Angular2 Änderungserkennung schaffen erkennt die Änderung und führt das Rohr wieder.

  • können Sie das Rohr unrein machen

@Pipe({ name: 'sortByType', pure: false}) 

dies Ihr Rohr verursacht, wird jedes Mal, Wechsel ausgeführt werden Erkennung ausgeführt werden.

Sie können eine benutzerdefinierte Änderungserkennung mithilfe von IterableDiffer durchführen und zwischengespeicherte Ergebnisse zurückgeben, wenn das Array nicht tatsächlich geändert wurde.

Mit dieser Option müssen Sie vorsichtig sein, um keine schwerwiegenden Leistungseinbußen zu verursachen.

  • Sie können einen zusätzlichen Parameter an das Rohr passieren, dass Sie (zum Beispiel eine Nummer aktualisieren, dass jedes Mal der Array-Änderungen erhöht wird.

diese Weise wird das Rohr genannt wird, weil Winkeländerungserkennung der Anrufe . Rohr jedesmal, wenn der Wert oder eine Parameteränderung

ein Nachteil ist, dass es ein bisschen umständlicher ist