Angular學習(二):元件-生命週期

大喻喻發表於2019-05-09

每個元件都有一個被 Angular 管理的生命週期。Angular 建立它,渲染它,建立並渲染它的子元件,在它被繫結的屬性發生變化時檢查它,並在它從 DOM 中被移除前銷燬它。Angular 提供了生命週期鉤子,開發者可以介入該生命週期中的這些關鍵時刻。除了那些元件內容和檢視相關的鉤子外,指令有相同生命週期鉤子。

生命週期概覽

每個介面(介面是可選的)都有唯一的一個鉤子方法,它們的名字是由介面名再加上 ng 字首構成的。當 Angular 使用建構函式新建一個元件或指令後,就會按下面的順序在特定時刻呼叫這些生命週期鉤子方法:

鉤子 用途及時機
ngOnChanges() 當 Angular(重新)設定資料繫結輸入屬性時響應。 該方法接受當前和上一屬性值的 SimpleChanges 物件在 ngOnInit() 之前以及所繫結的一個或多個輸入屬性的值發生變化時都會呼叫。
ngOnInit() 在 Angular 第一次顯示資料繫結和設定指令/元件的輸入屬性之後,初始化指令/元件。在第一輪 ngOnChanges() 完成之後呼叫,只呼叫一次
ngDoCheck() 檢測,並在發生 Angular 無法或不願意自己檢測的變化時作出反應。在每個變更檢測週期中,緊跟在 ngOnChanges() 和 ngOnInit() 後面呼叫。
ngAfterContentInit() 沒當 Angular 把外部內容投影進元件/指令的檢視之後呼叫。第一次 ngDoCheck() 之後呼叫,只呼叫一次
ngAfterContentChecked() 每當 Angular 完成被投影元件內容的變更檢測之後呼叫。ngAfterContentInit() 和每次 ngDoCheck() 之後呼叫
ngAfterViewInit() 每當 Angular 初始化完元件檢視及其子檢視之後呼叫。第一次 ngAfterContentChecked() 之後呼叫,只呼叫一次
ngAfterViewChecked() 每當 Angular 做完元件檢視和子檢視的變更檢測之後呼叫。ngAfterViewInit() 和每次 ngAfterContentChecked() 之後呼叫。
ngOnDestroy() 沒當 Angular 每次銷燬指令/元件之前呼叫並清掃。 在這兒反訂閱可觀察物件和分離事件處理器,以防記憶體洩漏。在 Angular 銷燬指令/元件之前呼叫。

相關文章