理解
angular提供了生命週期鉤子,把這些關鍵生命時刻暴露出來,賦予我們在它們發生時採取行動的能力。可以將鉤子函式理解為在合適的時候做合適的事情。
鉤子函式
ng4主要提供了8個鉤子函式:
ngonchanges
@input屬性(輸入屬性)發生變化時,會呼叫。非此屬性,不會呼叫。
當輸入屬性為物件時,當物件的屬性值發生變化時,不會呼叫,當物件的引用變化時會觸發。
先於ngoninit呼叫。
ngoninit
只執行一次,dom操作可放在其中。(最常用)
ngdocheck
每次發生變更檢測時會被呼叫
ngdocheck() 是angular中的變更檢測機制.它由 zone.js 來實現的.其行為是只要你的angular中的某個元件發生非同步事件.就會檢查整個元件樹,以保證元件屬性的變化或頁面的變化是同步的.所以 ngdocheck() 的觸發相當頻繁的.並且是我們無法預料到的.也許我們在頁面上的乙個無意識操作,就會觸發幾個甚至幾十個的 ngdocheck() 生命週期鉤子.
ngaftercontentinit
在元件內容初始化之後呼叫
ngaftercontentchecked
內容投影:父元件寫在子標籤之間的內容會被渲染到子模板的ng-content中去,類似vue的slot
元件及子元件每次檢查內容時呼叫
當父子元件都有該鉤子時,父元件先執行。
ngafterviewint
元件相應的檢視初始化之後呼叫
ngafterviewchecked
元件及子元件每次檢查檢視時呼叫
當父子元件都有該鉤子時,子元件先執行。
ngafterviewchecked與ngafterviewint中不允許修改繫結的屬性(@input屬性),否則丟擲異常
ngondestory
銷毀,事件解綁。
3.執行順序
父元件:
元件模板
}
元件@component()
export class fathercomponent implements oninit
ngoninit()
ngonchanges()
ngdocheck ()
ngaftercontentinit()
ngaftercontentchecked()
ngafterviewinit()
ngafterviewchecked()
}
子元件
@component()
export class soncomponent implements oninit
ngoninit()
ngonchanges ()
ngdocheck ()
ngaftercontentinit()
ngaftercontentchecked()
ngafterviewinit()
ngafterviewchecked()
}
看列印結果:
當在父元件的input中輸入內容時,會列印如下結果:
看到有人說只有當使用內容投影時才會呼叫ngafterconentchecked,當上面的裡面的**很顯然是沒用ng-content的,不知道該怎麼解釋這個ngafterconentchecked。
Angular學習 三 生命週期鉤子
angular提供了生命週期鉤子,把這些關鍵生命時刻暴露出來,賦予我們在它們發生時採取行動的能力。可以將鉤子函式理解為在合適的時候做合適的事情。官方給出的解釋是 每個元件都有乙個被 angular 管理的生命週期。angular 建立它,渲染它,建立並渲染它的子元件,在它被繫結的屬性發生變化時檢查它...
Angular學習筆記30 生命週期鉤子
angular 提供了生命週期鉤子,並把元件的關鍵生命時刻 初始化,發生變化,銷毀時等 暴露出來,讓開發者通過這些關鍵的生命週期時刻,更好的作出更好的邏輯處理。ngoninit 這個生命週期鉤子是最常見的乙個生命週期鉤子,在使用angular cli建立乙個新的元件的時候,angular cli會自...
1 生命週期
not running 非執行狀態 not running inactive active background suspended inactive 前台非活動狀態 active 前台活動狀態 background 後台狀態 suspended 掛起狀態 not running inactive ...