コンポーネントレベルでプロパティの変更に反応する最善の方法は何ですか?私が探しているのは、コンポーネントのプロパティの1つが変更されるたびにメソッドをトリガする方法です。ここで、単一のコンポーネントの上記の例で角度2で検出されるプロパティの検出
@Component({selector: 'component', template: '{{name}} {{number}}'})
class singleComp {
name: string = 'Old';
number: number = 1;
changeProperties() {
this.name = 'New';
this.number = 2;
}
changesDetected() {
console.log('Changes detected');
}
}
、singleComp 2つのプロパティname
とnumber
を有しています。これは簡単な例です。 changesDetected()
をchangeProperties()
から呼び出すことは、コンポーネントのプロパティを変更する複数のメソッドを持つ可能性があるため、オプションではありません。私はchangesDetected()
に、プロパティを変更する各メソッドの終わりに呼びたくはありません。これは、複数のメソッドからの複数の呼び出しを意味するためです。
私はOnChanges
とAfterContentChecked
を使って変更を検出しようとしましたが、実際には動作しません。これらのメソッドは、@input
プロパティの変更を検出しますが、コンポーネント内の「ネイティブ」プロパティの変更は検出しません。
まもなく説明
は、私がchangesDetected()
部品の内部プロパティが変更されるたびに発射する方法を探しています。
編集
ngDoCheck
は内部の変更を検出したことは事実です。しかし、実装されると、外部コンポーネントの変更も検出され、コンポーネントレベルではそれほど有用ではありません。
[@Inputまたは@Outputなしの変更での角2ウォッチコンポーネントプロパティの複製(https://stackoverflow.com/questions/39111323/angular-2-watch-component-property-入力または出力なしの変更) –
@AnteJablanAdamović、私は '@ input'の変更の検出を探していないという質問に書いています。興味のあるものは、コンポーネントのネイティブプロパティの内部的な変更に関連しています。 – Treeindev
他のスレッドをもう一度読むと、わからない場合は英語のチュートリアルをお勧めします。 'without' –