私は、UIに表示したいデータを含む 'data'というオブジェクトを持つ親コンポーネントを持っています。データがテーブルに表示され、そのテーブルを含む子コンポーネントが作成されました。したがって、テーブルコンポーネントを呼び出すときに、データを@Input()として渡しています。表示の上にinput()へのデータのプッシュが検出されない:角度4
//親componeneテンプレート
<display-data [data]='data'></display-data>
、私はこのデータプロパティを変更し、私の親コンポーネントで2つのメソッドを持っています。私は角度入力を使用しているので)(
addNewData(newData: Array) {
this.data.push(...newData);
}
、:それの一つは、再割り当て、このような何かを持つデータ配列:
setNewData() {
this.data = this.response.content;
}
、別の方法では、新しいデータが既に存在するデータをプッシュ私は親コンポーネントのデータオブジェクトを変更する(再割り当てまたはデータを追加する)たびに、子コンポーネントのデータプロパティが即座に更新され、新しいデータがUIに表示されることを前提としています。それは期待どおりに動作します。 しかし、Angularのライフサイクルフック「ngOnChanges」を見てみると、再割り当てが行われたときにのみ呼び出され、データオブジェクトで新しいデータをプッシュしたときには呼び出されないことに気付きました。
これはngOnChangesの仕組みですか?子コンポーネント内のデータが変更されるたびにメソッドを呼び出す必要があるためです。
代わりに、ソース配列内の各アイテムを個々のコンポーネント@Input()に渡して、各アイテムの変更を追跡することもできます。配列全体ではなく –