我有一個指令,它是一個@Input
接受一個類。在angular2中,如何獲取變化的屬性發生變化的對象@Input
@Directive({selector: 'my-directive'})
@View({directives: [CORE_DIRECTIVES]})
export class MyDirective {
@Input() inputSettings : SettingsClass;
@Input() count : number;
onChanges(map) {
console.log('onChanges');
}
}
的指令在HTML中使用:
...
<my-directive [input-settings]="settings" [count]="settings.count"></my-directive>
...
如果settings.count改變,則onChanges
將閃光。如果設置類中的任何其他屬性發生更改,則不會觸發。
如何檢測設置上是否有任何屬性發生更改?
我的猜測是此(目前? )不起作用......也許是因爲'inputSettings'包含對對象實例的引用,並且由於引用本身不會改變,所以Angular可能不會嘗試比較對象屬性,因此它不會查看或報告更改。 (我希望我錯了,或者我希望他們解決這個問題。) –
確實,[Victor Savkin的博客文章](http://victorsavkin.com/post/133936129316/angular-immutability-and-encapsulation)證實了我的假設: 「如果地址對象是可變的,其他組件可以更新街道屬性而不創建新的地址對象。如果發生這種情況,onChanges鉤子將不會被調用。 –
你也可以使用getter和setter作爲屬性輸入屬性 – Ayyash