指令和組件的實例都有一個生命週期:新建、更新和銷燬。
當Angular使用構造含新建一個組件或指令後,就會按照特定的順序調用這些生命週期鉤子方法:
他們的順序爲:
- ngOnChanges():當組件數據綁定的輸入屬性發生改變時發生,該方法接受一個SimpleChanges對象,包括當前值和上一屬性值。首次調用一定發生在ngOnInit前,注意的是該方法僅限於對象的引用發生變化時,也就是說,如果對象的某個屬性發生變化,Angular是不會觸發onChanges的
- ngOnInit():初始化指令或組件,在angular第一次展示組件的綁定屬性後調用,該方法只調用一次
-
ngDocheck: 檢測,並在發生Angular無法或不願意自己檢測的變化時作出反應。
在每個Angular變更檢測週期中調用,ngOnChanges()
和ngOnInit()
之後。- ngAfterContentInit: 當把內容投影進組件之後調用。
第一次ngDoCheck()
之後調用,只調用一次. 只適用於組件。 - ngAfterContentChecked: 每次完成被投影組件內容的變更檢測之後調用。
ngAfterContentInit()
和每次ngDoCheck()
之後調用,只適合組件。 - ngAfterViewInit: 在
angular
初始化組件及其子組件的視圖之後調用, 只調用一次,第一次ngAfterContentChecked()
之後調用.只適合組件。 - ngAfterViewChecked: 每次做完組件視圖和子視圖的變更檢測之後調用。
ngAfterViewInit()
和每次ngAfterContentChecked()
之後調用。只適合組件。
- ngAfterContentInit: 當把內容投影進組件之後調用。
- ngOnDestroy:在
angular
每次銷燬組件或指令之前調用, 通常用於移除事件監聽,退訂可觀察對象等。釋放那些不會被垃圾收集器自動回收的各類資源的地方。取消那些對可觀察對象和DOM事件的訂閱。停止定時器。註銷該指令曾註冊到全局服務或應用級服務中的各種回調函數。