国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

淺談angular2 組件的生命周期鉤子

2019-11-19 15:49:32
字體:
供稿:網(wǎng)友

本文介紹了淺談angular2 組件的生命周期鉤子,分享給大家,具體如下:

按照生命周期執(zhí)行的先后順序,Angular生命周期接口如下所示

名稱

時(shí)機(jī)

接口

范圍

ngOnChanges

當(dāng)被綁定的輸入屬性的值發(fā)生變化時(shí)調(diào)用,首次調(diào)用一定會(huì)發(fā)生在 ngOnInit之前。

OnChanges

指令和組件

ngOnInit

在第一輪 ngOnChanges 完成之后調(diào)用。 ( 譯注:也就是說當(dāng)每個(gè)輸入屬性的值都被觸發(fā)了一次 ngOnChanges之后才會(huì)調(diào)用 ngOnInit ,此時(shí)所有輸入屬性都已經(jīng)有了正確的初始綁定值 )

OnInit

指令和組件

ngDoCheck

在每個(gè) 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)建組件/指令時(shí),它調(diào)用這些生命周期鉤子方法的順序是:

  • ngOnChanges:在ngOnInit之前,當(dāng)數(shù)據(jù)綁定輸入屬性的值發(fā)生變化時(shí)。
  • ngOnInit:在第一次ngOnChanges之后。
  • ngDoCheck:每次Angular變化檢測時(shí)。
  • ngAfterContentInit:在外部內(nèi)容放到組件內(nèi)之后。
  • ngAfterContentChecked:在放到組件內(nèi)的外部內(nèi)容每次檢查之后。
  • ngAfterViewInit:在初始化組件視圖和子視圖之后。
  • ngAfterViewChecked:在妹子組件視圖和子視圖檢查之后。
  • ngOnDestroy:在Angular銷毀組件/指令之前。

除此之外,一些組件還提供了自己的生命周期鉤子。例如router有routerOnActivate。

測試生命周期順序的代碼

import {Component} from '@angular/core';import {bootstrap} from '@angular/platform-browser-dynamic';@Component({ selector: 'panel', inputs: ['title', 'caption'], template: '<ng-content></ng-content>'})class Panel { // 組件輸入屬性值發(fā)生改變(首次調(diào)用一定會(huì)發(fā)生在 ngOnInit之前。) ngOnChanges(changes) {  console.log('On changes', changes); } // 組件初始化完成(在第一輪 ngOnChanges 完成之后調(diào)用。 ( 譯注:也就是說當(dāng)每個(gè)輸入屬性的值都被觸發(fā)了一次 ngOnChanges 之后才會(huì)調(diào)用 ngOnInit ,此時(shí)所有輸入屬性都已經(jīng)有了正確的初始綁定值 )) ngOnInit() {  console.log('Initialized');  console.warn('OnChanges和DoCheck鉤子不要同時(shí)出現(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: `  <button (click)="toggle()">Toggle</button>  <div *ngIf="counter % 2 == 0">   <panel caption="Sample caption" title="Sample">Hello world!</panel>  </div> `, directives: [Panel]})class App { counter: number = 0; toggle() {  this.counter += 1; }}bootstrap(App);

輸出結(jié)果

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宿迁市| 东丽区| 交城县| 房产| 株洲县| 永济市| 韶关市| 湘潭市| 调兵山市| 合江县| 巩义市| 河东区| 镇平县| 大埔区| 上杭县| 赣榆县| 望都县| 延边| 灌南县| 满洲里市| 荔浦县| 宝兴县| 广丰县| 蓬莱市| 五大连池市| 隆德县| 长沙县| 潜山县| 时尚| 沂源县| 永登县| 常山县| 博客| 鄂伦春自治旗| 铁岭市| 河曲县| 梁平县| 西峡县| 浑源县| 普洱| 南宁市|