2017-03-17 4 views
0

Ich habe eine Elternkomponente und Kind. Kinder haben eine OnPush-Strategie, um Änderungen zu erkennen. Ich pass throght binding() ein Array von Objekten.Angular 2 OnPush Strategie sieht keine Änderungen in Arry

Aber wenn alles gerendert wird und ich ein Feld eines der Objekte aus dem Array ändern, wird die Vorlage, in der ich Felder listet, nicht aktualisiert. Weiß jemand warum?

Antwort

0

OnPush kann nur mit Unveränderlichkeit verwendet werden.

Wenn Sie Ihr Array zum Beispiel mit der Methode push mutieren, wird Ihre Komponente nicht aktualisiert, da Ihre Array-Referenz immer noch dieselbe ist.

In der übergeordneten Komponente, wenn wir das Beispiel nehmen einen Wert hinzufügen möchten, sollten Sie tun:

this.myArray = [...this.myArray, {someObjectOrWhatever: ''}] // this creates a new reference 

Wenn Sie möchten, dass Sie Filter verwenden, um entfernen könnte, die auch ein neues Array zurückgibt.

Aber solange Sie die gleiche Referenz beibehalten und OnPush auf Ihrer untergeordneten Komponente aktiviert haben, sehen Sie keine Aktualisierung.

Verwandte Themen