Ich habe eine Elternkomponente mit einem Objekt namens 'data', das einige Daten enthält, die ich auf der Benutzeroberfläche anzeigen möchte. Die Daten werden in einer Tabelle angezeigt und ich habe eine untergeordnete Komponente erstellt, die diese Tabelle enthält. Während ich die Tabellenkomponente aufruft, gebe ich die Daten als @Input() weiter.Daten zur Eingabe() werden nicht erkannt: Angular 4
// Mutter componene Vorlage
<display-data [data]='data'></display-data>
Auf der Anzeige, ich habe zwei Methoden in meiner Eltern-Komponente, die diese Daten Eigenschaft geändert. Einer davon Wieder ordnet das Datenfeld mit so etwas wie folgt aus:
setNewData() {
this.data = this.response.content;
}
und ein anderes Verfahren schiebt die neuen Daten zu bereits vorhandenen Daten:
addNewData(newData: Array) {
this.data.push(...newData);
}
Weil ich bin mit Angular Input(), Ich nehme an, dass die Dateneigenschaft in der untergeordneten Komponente sofort aktualisiert wird, wenn ich das Datenobjekt in der übergeordneten Komponente (Neuzuweisung oder Hinzufügen von mehr Daten) ändere und ich die neuen Daten auf der Benutzeroberfläche anzeigen werde. Das funktioniert wie erwartet. ABER, als ich versuchte, Angulars Lebenszyklus-Hook "ngOnChanges" zu betrachten, bemerkte ich, dass es nur aufgerufen wird, wenn die Neuzuweisung passiert, und nicht, wenn ich einige neue Daten in das Datenobjekt drücke.
Funktioniert das wie ngOnChanges? Weil ich eine Methode immer dann aufrufen möchte, wenn sich die Daten in der Kindkomponente ändern.
Eine Alternative wäre, jedes Element im Quell-Array an eine einzelne Komponente @Input() zu übergeben, um die Änderungen jedes Elements zu verfolgen. Anstatt das ganze Array. –