2017-02-17 90 views
0

我開始時有一個空數組。之後,我將對象推送到該陣列。如何檢測兒童的變化

這個數組在父組件中,它通過[輸入]傳遞給子 問題是當我添加一個對象來使孩子沒有檢測到任何更改時。

我用ngOnChanges,當我擴展陣列沒有記錄與變化:(

ngOnChanges(changes: SimpleChanges) { 
     console.log('my changes', changes); 
    } 

所以我不知道它是如何工作真的我怎麼可以調用任何行動時,孩子的知道父數據改變

+0

更改數組或對象的內容不包含在angulars變更檢測中。你可以自己檢查修改,例如'ngClass'指令https://github.com/angular/angular/blob/45cc4441540beba041762c7b0435e839df84e6a4/modules/%40angular/common/src/directives/ng_class.ts#L79,或者你可以在子訂閱的共享服務中使用observable,以獲取有關更改的通知。 –

+0

Plunker會有所幫助。 –

回答

0

你不會可以登錄每說「變化」,但你仍然可以調用內部ngOnChanges

一個動作,如果你@input被更新數據ngOnChanges會觸發,你可以在那裏調用一個函數。例如。

@Input() listings: List; //assume this is array of list 

ngOnChanges(changes: SimpleChanges) { 

    if(this.listings) 
    this.onClick(this.listings[0]); //on changes, call Onclick on 1st list 

} 

onClick(list){ 
//do something with list 
}