2016-02-21 94 views
4

所以我一直在閱讀角2有兩種方法來做同樣的事情,但我不知道它的根本區別,如果有的話。什麼時候使用構造函數,何時使用OnInit

考慮以下

構造

export class MyComponent { 
    myAge: number; 

    constructor(){ 
    this.myAge = 24; 
    } 
} 

的OnInit

export class MyComponent implements OnInit{ 
    myAge: number; 

    ngOnInit(): any { 
    this.myAge = 24; 
    } 
} 

回答

5

第一個是相關的類實例化和具有無關Angular2。我的意思是一個構造函數可以用於任何類。您可以爲其新創建的實例進行一些初始化處理。

第二個對應於Angular2組件的生命週期鉤:

  • ngOnChanges當輸入或輸出結合值改變
  • ngOnInit在第一ngOnChanges

所以之後調用被稱爲如果初始化處理依賴於組件的綁定(例如使用@Input定義的組件參數),我會使用ngOnInit,否則構造函數就足夠了...

在你的情況下使用構造函數就夠了。

+1

謝謝你的回答!有一個問題,ngOnInit看起來像是一個有角度的構造函數,它一直使用它是不好的?有沒有任何性能問題? –

+1

不客氣!不,這不壞...它只是晚於組件生命週期中的構造函數調用。 –

相關問題