まず私はこの私のngDoCheck方法でを持っていたし、完璧に動作します:DoCheckのKeyValueDiffersはコンポーネントごとに1つのオブジェクトに対してのみ機能しますか?
var productChanges = this.differ.diff(this.myProduct);
はその後、私のコンポーネントの第2のモデルで変更をチェックすることを決定し、ラインの下にこれを追加しました:
var companyChanges = this.differ.diff(this.myCompany);
と両方の変更別のifステートメントで処理されますが、最後のステートメントのみが呼び出されます(companyChanges)
これは予期した動作ですか? ngDoCheckはコンポーネントごとに1つのオブジェクトに対してのみ機能しますか?ここで明確にするために
は私の完全なngDoCheck方法である:
ngDoCheck() {
var productChanges = this.differ.diff(this.myProduct);
//DOESN'T IT CHECK 2 MODELS LIKE SO BELOW ?
//var companyChanges = this.differ.diff(this.myCompany);
if (productChanges) {
// console.log('Product changes detected');
productChanges.forEachChangedItem((r: KeyValueChangeRecord) => {
if (r.currentValue && r.currentValue != r.previousValue) {
this.filterProduct(r.currentValue, r.key);
}
});
}
編集:私はこれを共有する必要があると感じ、他の質問と回答を読むことによって:
コンポーネントのコンストラクタである異なります次のように定義されています:
this.differ = differs.find({}).create(null);
おそらく、これは最初に変更する必要があります。この質問のための@ティエリー・TEMPLIERからの回答を読んだ後