在組件級別對屬性更改做出反應的最佳方法是什麼?我正在尋找的是每次組件的某個屬性發生更改時觸發方法的方法。這裏的一個單個部件:在Angular 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有兩個屬性name
和number
。這是一個簡單的例子。從changeProperties()
調用changesDetected()
不是一個選項,因爲組件可能有多個方法修改組件的屬性。我不想在修改屬性的每個方法的末尾調用changesDetected()
,因爲這將意味着來自多個方法的多個調用。
我試圖使用OnChanges
和AfterContentChecked
來檢測更改,但沒有一個真正有效。這些方法檢測@input
屬性的更改,但未檢測到組件內「本機」屬性的更改。
簡而言之,我正在尋找一種方法來在每次修改組件的內部屬性時觸發changesDetected()
。
編輯
這是事實,ngDoCheck
檢測內部的變化。但是,一旦實現它,它也將檢測外部組件的變化,並且在組件級別上並不真正有用。
可能重複[Angular 2監視組件屬性更改沒有@Input或@Output](https://stackoverflow.com/questions/39111323/angular-2-watch-component-property- for-changes-without-input-or-output) –
@AnteJablanAdamović,我寫了一個問題,我不是在尋找'@ input'變化檢測。我對組件的本地屬性的內部更改感興趣。 – Treeindev
再次閱讀其他線程,如果你還不明白,我會建議英語語言教程。 '沒有' –