2017-07-21 16 views
4

Ich habe ein Array von Objekten (nennen wir es arr). In einer der Eingaben meiner Komponente in der (change) Methode modifiziere ich eines der Attribute dieses Objekts, aber in der Ansicht (*ngFor) ändert sich nichts. Ich las, dass Angular2 Änderungserkennung nicht den Inhalt von Arrays oder Objekt nicht überprüft, so habe ich versucht, diese:Angular2: * ngFor wird nicht aktualisiert, wenn Array aktualisiert wird

this.arr = this.arr.slice(); 

und

this.arr = [..this.arr]; 

Aber die Aussicht ändert sich nicht, es zeigt immer noch die alte Attribut. In der (change) Methode mit console.log() habe ich das richtige Array. Seltsam, aber dieses funktioniert: this.arr = []; Ich versuchte NgZone und markForCheck() auch.

Antwort

1

Versuchen Sie, eine tiefe Kopie Erstellen von

this.arr = Object.assign({}, NEW_VALUE); 
1
  1. überprüfen zu tun, wenn Ihre Komponente mit Change konfiguriert ist: cHangeDetectionStrategy.OnPush, wenn Sie diese gehen dann nach updation von Array Sie changeDetectorRef.markForCheck nennen müssen()
  2. Sie können auch onChange lifecycle hook implementieren und Werte von Array innerhalb dieser Funktion ändern.
Verwandte Themen