輸入輸出屬性必須是在有父子關係的組件間使用app
@Input() private keyword: string;
@Output() searchResult: EventEmmiter<any> = new EventEmmiter();
constructorangular4
構造函數。
ngOnchanges函數
綁定屬性發生變化的時候調用,第一次調用必定在ngOnInit以前。
ngOninitcode
第一輪ngChanges以後調用,本鉤子只調用一次。
ngDoCheck生命週期
在ngOnInit和ngDoCheck以後,會一直檢查。
ngAfterContentInit事件
當內容投影進組件以後調用。第一次ngDoCheck以後調用,只調用一次,只適用於組件。父組件調用完成以後,全部子組件纔會調用。
ngAfterContentChecked內存
每完成被投影組件內容發生變化時調用。ngAfterContentInit和ngDocheck以後調用,只適用於組件。父組件調用完成以後,全部子組件纔會調用。
ngAfterViewInit路由
初始化完成組件試圖及其子視圖以後調用。第一次ngAfterContentChecked以後調用,只調用一次,只適用於組件。全部子組件調用完成以後,父組件纔會調用。此階段更改屬性的值會報錯,可在settimeout後運行。
ngAfterViewCheckedstring
每次作完組件視圖和子組件視圖的變動檢測以後調用。ngAfterViewInit和ngAfterContentChecked以後調用,只適用於組件。全部子組件調用完成以後,父組件纔會調用。此階段更改屬性的值會報錯,可在settimeout後運行。
ngDoDestoryit
組件銷燬時調用,主要用於內存回收。路由跳轉時組件會銷燬。
執行順序:
constructor ↓ ngOnChanges ↓ ngOnInit ↓ ngDoCheck ↓ ngAfterContentInit ↓ ngAfterContentChecked ↓ ngAfterViewInit ↓ ngAfterViewChecked ngDoCheck ↓ ngAfterContentChecked ↓ ngAfterViewChecked ... ngDestory
不管變動發生在哪一個組件上,zone.js都將會檢查整個angular組件樹,從根組件appComponent開始,直至全部組件所有檢查完成。
onpush策略是當組件的輸入屬性發生變動時纔會檢查當前組件及其子組件。