ngOnchanges
:當被綁定的輸入屬性的值發生變化時調用,首次調用必定會發生在ngOnInit
以前。 範圍:指令和組件 ,接口名稱: OnChanges
數組
#1.ngOnchanges
在父組件(初始化或修改)子組件的輸入參數下調用, 用在有輸入屬性的子組件瀏覽器
用處:當Angular設置數據綁定輸入屬性發生變化時響應.異步
時機: 當被綁定的輸入屬性的值發生變化時調用,不過首次調用是會發生在ngOnInit()
以前的函數
ngOnChanges()
方法獲取了一個對象,它能夠同時觀測1個/多個綁定的屬性值,它把每一個發生變化的屬性名都映射到了一個SimpleChange
對象,該對象中有屬性的當前值和前一個值code
觸發條件:對象
@input屬性(輸入屬性)發生變化時,會調用.非此屬性,不會調用接口
當輸入屬性對象時,當對象的屬性值發生變化時,不會調用,當對象的引用變化時觸發生命週期
輸入屬性,使用@input 裝飾的屬性,這裏還須要注意不可變對象,在angular中,典型的不可變對象是string類型,但全部的自定義對象均爲可變對象, 如user:{name : string } ,可變對象即便被定義爲輸入屬性,也不會觸發OnChanges方法,當修改子組件參數時,只有如下狀況ngOnchanges
纔會被調用事件
輸入屬性@input()屬性
內存
不可變對象: undefined , null , boolean ,number , string
可變對象:對象(包括數組和函數)
可變對象
var greeting = 'hello'
greeting = 'hello world'
greeting
的值發生改變,由於其指向的字符串地址從hello
指向了hello world
不可變對象
var user = { name :Tom }
user.name = 'Jim'
user的指向的內存地址並無改變,改變的是user對象中的name屬性 ngOnChanges
鉤子接收一個類型爲SimpleChange
的映射對象,包括新值和舊值
ngOnInit
在第一輪ngOnChanges完成以後調用,發生於構造函數以後,用於初始化指令/組件,注意用於數據綁定的屬性處理。
範圍:指令和組件 , 接口名稱: OnInit
開發業務中咱們常常在ngOnInit
作一些初始化的工做,而這些工做盡可能要避免在constructor
中進行,constructor
中應該只進行依賴注入而不是進行真正的業務操做
ngDoCheck
在每一個Angular變動檢測週期中調用,用於變動的檢測
範圍:指令和組件 接口名稱:DoCheck
Angular的變動檢測機制配合zone.js來實現,保證組件變化和頁面變化同步,瀏覽器中任何異步事件都會觸發檢測機制 , 檢測模板全部綁定屬性,若改變則相應區域會被更新。 須要注意的是:變動檢測機制只會把組件屬性的改變反應到模板上,不會改變組件值
ngAfterContentInit
當把內容投影進組件以後調用。
範圍:組件 , 接口:AfterContentInit
ngAfterContentChecked
每次完成被投影組件內容的變動檢測以後調用。
範圍:組件 , 接口: AfterContentChecked
ngAfterViewInit
: 初始化完組件視圖及其子視圖以後調用
範圍:組件 , 接口:AfterViewInit
ngAfterViewChecked
每次作完組件視圖喝子視圖的變動檢測以後調用
範圍:組件 , 接口 : AfterViewChecked
ngOnDestroy
當Angular每次銷燬指令/組件以前調用
範圍:指令和組件 , 接口:OnDestroy