Wenn Sie Ihr metaIds-Array neu zuweisen, wird das ngOnChanges-Lifecycle-Ereignis ausgelöst. Sie können Ihr Array in ein neues Array dekonstruieren.
%Vor%Meine eckige Anwendung blieb bei einem Problem hängen, ich benutzte die Eingabe als Array und drückte einen Wert auf das Array, wenn das Klickereignis auftrat. Aber die ngOnChanges feuern nicht, wenn der Array-Push ausgeführt wird. Gibt es eine Möglichkeit zum Auslösen von ngOnChange
?Mein Code ist ts Datei ist
%Vor%Mein Auswahltag
%Vor%Klicken Sie auf Ereigniscode
%Vor%Die Erkennung von Winkeländerungen überprüft nur die Objektidentität, nicht den Objektinhalt. Einfügungen oder Entfernungen werden daher nicht erkannt.
Sie können das Array nach jedem Update kopieren
%Vor%oder verwenden Sie %code% , um nach Änderungen in %code% in %code% wie %code% zu suchen.
@ GünterZöchbauer's Antwort ist völlig richtig. Ich möchte jedoch eine Alternative / Ergänzung zum Kopieren des gesamten Arrays hinzufügen. Verwenden Sie das gleiche Beispiel aus der Frage.
%Vor%wurde zu
geändert %Vor%Die Länge hier entspricht der Funktion * ngFor trackBy für die Komponente. Damit treten die ngOnChanges mit Inhaltslängenänderungen auf.
Bei Verwendung in Verbindung mit der Methode * ngFor trackBy sollte die Leistung verbessert werden, da die gebundenen Vorlagen des gesamten Arrays nicht neu berechnet werden (kein Bildschirm- / Inhaltsflackern).