

例子演示所有鉤子的調(diào)用順序
1.子組件

2.父組件app.html

3.

效果:

結(jié)論:構(gòu)造函數(shù)一定存在,其他方法根據(jù)實(shí)際實(shí)現(xiàn)。如果沒實(shí)現(xiàn)這些鉤子,發(fā)生這些事,組件就跳過去了。
ngOnChanges:在ngOnInit之前,當(dāng)數(shù)據(jù)綁定輸入屬性的值發(fā)生變化時(shí)。
ngOnInit:在第一次ngOnChanges之后。用來初始化 ?(輸入屬性name在構(gòu)造函數(shù)是空的,在第一次調(diào)用ngOnChanges被初始化,如果組件初始化依賴輸入屬性值,初始化邏輯寫在ngOnInit中)
什么是生命周期鉤子
?簡單點(diǎn)來說生命周期鉤子就是Angular中一個(gè)組件從被創(chuàng)建當(dāng)銷毀期間的一些有意義的關(guān)鍵時(shí)刻.這些關(guān)鍵時(shí)刻在Angular中被Angular核心模塊 @angular/core 暴露出來,賦予了我們在它們發(fā)生時(shí)采取行動(dòng)的能力.
指令和組件的實(shí)例有一個(gè)生命周期:新建、更新和銷毀。
每個(gè)接口都有唯一的一個(gè)鉤子方法,它們的名字是由接口名加上?ng前綴構(gòu)成的。比如,OnInit接口的鉤子方法叫做ngOnInit。
生命周期順序簡寫
在Angular通過構(gòu)造函數(shù)創(chuàng)建組件/指令時(shí),它調(diào)用這些生命周期鉤子方法的順序是:
ngOnChanges:在ngOnInit之前,當(dāng)數(shù)據(jù)綁定輸入屬性的值發(fā)生變化時(shí)。
ngOnInit:在第一次ngOnChanges之后。用來初始化 ?(輸入屬性name在構(gòu)造函數(shù)是空的,在第一次調(diào)用ngOnChanges被初始化,如果組件初始化依賴輸入屬性值,初始化邏輯寫在ngOnInit中)
ngDoCheck:每次Angular變化檢測時(shí)。
ngAfterContentInit:在外部內(nèi)容放到組件內(nèi)之后。
ngAfterContentChecked:在放到組件內(nèi)的外部內(nèi)容每次檢查之后。
ngAfterViewInit:在初始化組件視圖和子視圖之后。
ngAfterViewChecked:在妹子組件視圖和子視圖檢查之后。
ngOnDestroy:在Angular銷毀組件/指令之前。
除此之外,一些組件還提供了自己的生命周期鉤子。例如router有routerOnActivate