2016-03-25 91 views

回答

5

第一次輸入屬性被綁定(以及其後的每個時間都在那裏),根據lifecycle documentation調用ngOnChanges鉤子。

您可以可以將每個屬性綁定到SimpleChange對象公開新和以前的狀態:

ngOnChanges(changes: {[propertyName: string]: SimpleChange}) { 
    for (let propName in changes) { 
    if (propName === 'field1') 
     this.function1(); 

    if (propName === 'field2') 
     this.function2(); 
    } 
} 
3

這取決於

  • 你所說的「初始化」的意思,和
  • 什麼兩個輸入屬性的類型是

如果「初始化」總是意味着分配一個新值,然後參見@DavidL的答案。
請注意,如果輸入屬性類型是JavaScript引用類型(數組,對象等),那麼「分配新值」意味着分配新的數組,對象等。它不包括修改數組項或對象屬性。請閱讀該場景......

如果輸入屬性類型是JavaScript引用類型,「initialize」可能意味着更改Array項目的值或更改Object屬性的值,則不能使用ngOnChanges,因爲參考在這種情況下不會改變,因此角度更改檢測不會將此視爲更改。對於這種情況,請實施ngDoCheck並在該方法內編寫您自己的更改檢測邏輯。

+0

你應該更經常回答馬克。在angular2上缺乏很好的答案。 –

+3

@EricMartinez,我把這個東西稱爲一個不斷受阻的工作。 (我不抱怨,我喜歡我的工作。) –

+0

哦,男人,工作是邪惡的,他們甚至讓你覺得你喜歡他們!我希望能在這裏更多地見到你! –