十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要介紹angular4生命周期鉤子的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
安居網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
理解
Angular提供了生命周期鉤子,把這些關(guān)鍵生命時(shí)刻暴露出來(lái),賦予我們?cè)谒鼈儼l(fā)生時(shí)采取行動(dòng)的能力??梢詫^子函數(shù)理解為在合適的時(shí)候做合適的事情。
鉤子函數(shù)
ng4主要提供了8個(gè)鉤子函數(shù):
1、ngOnchanges
@input屬性(輸入屬性)發(fā)生變化時(shí),會(huì)調(diào)用。非此屬性,不會(huì)調(diào)用。
當(dāng)輸入屬性為對(duì)象時(shí),當(dāng)對(duì)象的屬性值發(fā)生變化時(shí),不會(huì)調(diào)用,當(dāng)對(duì)象的引用變化時(shí)會(huì)觸發(fā)。
先于ngOnInit調(diào)用。
2、ngOnInit
只執(zhí)行一次,dom操作可放在其中。(最常用)
3、NgDocheck
每次發(fā)生變更檢測(cè)時(shí)會(huì)被調(diào)用
ngDoCheck() 是Angular中的變更檢測(cè)機(jī)制.它由 zone.js 來(lái)實(shí)現(xiàn)的.其行為是只要你的Angular中的某個(gè)組件發(fā)生異步事件.就會(huì)檢查整個(gè)組件樹(shù),以保證組件屬性的變化或頁(yè)面的變化是同步的.所以 ngDoCheck() 的觸發(fā)相當(dāng)頻繁的.并且是我們無(wú)法預(yù)料到的.也許我們?cè)陧?yè)面上的一個(gè)無(wú)意識(shí)操作,就會(huì)觸發(fā)幾個(gè)甚至幾十個(gè)的 ngDoCheck() 生命周期鉤子.
4、ngAfterContentInit
在組件內(nèi)容初始化之后調(diào)用
5、ngAfterContentChecked
內(nèi)容投影:父組件寫(xiě)在子標(biāo)簽之間的內(nèi)容會(huì)被渲染到子模板的ng-content中去,類(lèi)似vue的slot
組件及子組件每次檢查內(nèi)容時(shí)調(diào)用
當(dāng)父子組件都有該鉤子時(shí),父組件先執(zhí)行。
6、ngAfterViewInt
組件相應(yīng)的視圖初始化之后調(diào)用
7、ngAfterViewChecked
組件及子組件每次檢查視圖時(shí)調(diào)用
當(dāng)父子組件都有該鉤子時(shí),子組件先執(zhí)行。
ngAfterViewChecked與ngAfterViewInt中不允許修改綁定的屬性(@input屬性),否則拋出異常
8、ngOnDestory
銷(xiāo)毀,事件解綁。
3.執(zhí)行順序
父組件:
組件模板
{{name}}
組件
@Component({ selector: 'father', templateUrl: './father.component.html', styleUrls: ['./father.component.scss'] }) export class FatherComponent implements OnInit { public name:string; constructor() { } ngOnInit() { console.log("父組件ngOninit"); } ngOnchanges(){ console.log("父組件ngonchanges"); } ngDoCheck (){ console.log("父組件ngDocheck") } ngAfterContentInit(){ console.log("父組件ngAfterContentInit") } ngAfterContentChecked(){ console.log("父組件ngAfterContentChecked") } ngAfterViewInit(){ console.log("父組件ngAfterViewInit") } ngAfterViewChecked(){ console.log("父組件ngAfterViewChecked") } }
子組件
@Component({ selector: 'son', templateUrl: './son.component.html', styleUrls: ['./son.component.scss'] }) export class SonComponent implements OnInit { @Input() name:string; constructor() { } ngOnInit() { console.log("子組件ngOninit"); } ngOnChanges (){ console.log("子組件ngonchanges"); } ngDoCheck (){ console.log("子組件ngDocheck") } ngAfterContentInit(){ console.log("子組件ngAfterContentInit") } ngAfterContentChecked(){ console.log("子組件ngAfterContentChecked") } ngAfterViewInit(){ console.log("子組件ngAfterViewInit") } ngAfterViewChecked(){ console.log("子組件ngAfterViewChecked") } }
看打印結(jié)果:
當(dāng)在父組件的input中輸入內(nèi)容時(shí),會(huì)打印如下結(jié)果:
以上是“angular4生命周期鉤子的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!