如果我希望函數x在每次組件加載時發生,無論是第一次,我導航到不同的站點並向後導航,或者是組件加載的第五次。Angular 2組件構造函數與OnInit
我應該把函數x放入什麼位置?組件構造函數或OnInit?
如果我希望函數x在每次組件加載時發生,無論是第一次,我導航到不同的站點並向後導航,或者是組件加載的第五次。Angular 2組件構造函數與OnInit
我應該把函數x放入什麼位置?組件構造函數或OnInit?
構造是打字稿類的預定義的默認方法。 Angular和constructor
之間沒有關係。通常我們使用constructor
來定義/初始化一些變量,但是當我們有與Angular的綁定相關的任務時,我們轉向Angular的ngOnInit
生命週期鉤子。在構造函數調用之後調用ngOnInit
。我們也可以在構造函數中完成相同的工作,但最好使用ngOnInit
來啓動Angular的綁定。
爲了使用ngOnInit
我們必須導入從核心庫這個鉤子:
import {Component, OnInit} from '@angular/core'
然後我們實現與出口類此接口(這不是強制性的,以實現這個接口,但是通常我們所做的)。
同時使用的實例:
export class App implements OnInit{
constructor(){
//called first time before the ngOnInit()
}
ngOnInit(){
//called after the constructor and called after the first ngOnChanges()
}
}
第一個(構造函數)與類實例化有關,並且與Angular2無關。我的意思是一個構造函數可以用於任何類。您可以爲其新創建的實例進行一些初始化處理。
第二個對應於Angular2組件的生命週期鉤:
ngOnChanges
當輸入或輸出結合值改變ngOnInit
在第一ngOnChanges
所以之後調用被稱爲如果函數的初始化處理依賴於組件的綁定(例如使用定義的組件參數),則應該使用),否則構造函數就足夠了...
有什麼情況下使用'ngOnInit'在構造將是壞? – dman
constructor()
是一個打字稿功能,並要求new SomeClass()
。構造函數確保在類層次結構中正確的字段初始化順序。
ngOnInit
是一個Angular2生命週期方法,Angular2在構建組件之後以及在第一次評估綁定和更新輸入之後由Angular調用。
你是100%的權利,我爲你upvote。在我看來,如果我們將'ngOnInit'描述爲React的'componentDidMount',那麼所有的混淆都將消失。但說實話,對於開發者,我們只需要只有一個初始化短語,不管它是否被調用。非常古老的方式是使用像類一樣的函數來構建一個組件類,所以注入作爲參數傳遞並且只需要一個'$ onInit'。 Ng2 +不是一件美麗的藝術品。 – stanleyxu2005
構造函數是一種TypeScript語言功能,具有一定的限制。沒有什麼Angular可以做到這一點。 –
但你沒有回答實際的問題。我們應該在這種情況下使用哪一個..? –
在構造函數調用之後不會調用ngOnInit,它們之間有ngOnChanges:https://angular.io/guide/lifecycle-hooks – Hazlo8