本文介紹了淺談angular2 組件的生命周期鉤子,分享給大家,具體如下:
在宜昌等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),宜昌網(wǎng)站建設(shè)費用合理。
按照生命周期執(zhí)行的先后順序,Angular生命周期接口如下所示
名稱 |
時機 |
接口 |
范圍 |
ngOnChanges |
當(dāng)被綁定的輸入屬性的值發(fā)生變化時調(diào)用,首次調(diào)用一定會發(fā)生在 ngOnInit之前。 |
OnChanges |
指令和組件 |
ngOnInit |
在第一輪 ngOnChanges 完成之后調(diào)用。 ( 譯注:也就是說當(dāng)每個輸入屬性的值都被觸發(fā)了一次 ngOnChanges之后才會調(diào)用 ngOnInit ,此時所有輸入屬性都已經(jīng)有了正確的初始綁定值 ) |
OnInit |
指令和組件 |
ngDoCheck |
在每個 Angular 變更檢測周期中調(diào)用。 |
DoCheck |
指令和組件 |
ngAfterContentInit |
當(dāng)把內(nèi)容投影進(jìn)組件之后調(diào)用。 |
AfterContentInit |
組件 |
ngAfterContentChecked |
每次完成被投影組件內(nèi)容的變更檢測之后調(diào)用。 |
AfterContentChecked |
組件 |
ngAfterViewInit |
初始化完組件視圖及其子視圖之后調(diào)用。 after initializing the component's views and child views. |
AfterViewInit |
組件 |
ngAfterViewChecked |
每次做完組件視圖和子視圖的變更檢測之后調(diào)用。 |
AfterViewChecked |
組件 |
ngOnDestroy |
當(dāng) Angular 每次銷毀指令 /組件之前調(diào)用。 |
OnDestroy |
指令和組件 |
生命周期順序簡寫
在Angular通過構(gòu)造函數(shù)創(chuàng)建組件/指令時,它調(diào)用這些生命周期鉤子方法的順序是:
除此之外,一些組件還提供了自己的生命周期鉤子。例如router有routerOnActivate。
測試生命周期順序的代碼
import {Component} from '@angular/core'; import {bootstrap} from '@angular/platform-browser-dynamic'; @Component({ selector: 'panel', inputs: ['title', 'caption'], template: '' }) class Panel { // 組件輸入屬性值發(fā)生改變(首次調(diào)用一定會發(fā)生在 ngOnInit之前。) ngOnChanges(changes) { console.log('On changes', changes); } // 組件初始化完成(在第一輪 ngOnChanges 完成之后調(diào)用。 ( 譯注:也就是說當(dāng)每個輸入屬性的值都被觸發(fā)了一次 ngOnChanges 之后才會調(diào)用 ngOnInit ,此時所有輸入屬性都已經(jīng)有了正確的初始綁定值 )) ngOnInit() { console.log('Initialized'); console.warn('OnChanges和DoCheck鉤子不要同時出現(xiàn),互斥!。本例僅供學(xué)習(xí)'); } // 臟值檢測器被調(diào)用后調(diào)用 ngDoCheck() { console.log('Do check'); } // 組件銷毀之前 ngOnDestroy() { console.log('Destroy'); } // 組件-內(nèi)容-初始化完成 PS:指的是ContentChild或者Contentchildren ngAfterContentInit() { console.log('After content init'); } // 組件內(nèi)容臟檢查完成 ngAfterContentChecked() { console.log('After content checked'); } // 組件視圖初始化完成 PS:指的是ViewChild或者ViewChildren ngAfterViewInit() { console.log('After view init'); } // 組件視圖臟檢查完成之后 ngAfterViewChecked() { console.log('After view checked'); } } @Component({ selector: 'app', template: ` `, directives: [Panel] }) class App { counter: number = 0; toggle() { this.counter += 1; } } bootstrap(App);Hello world!
輸出結(jié)果
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。