1. 程式人生 > >Angular開發(七)-關於元件的生命週期

Angular開發(七)-關於元件的生命週期

一、說明

Angular每個元件都存在一個生命週期,從建立,變更到銷燬。Angular提供元件生命週期鉤子,把這些關鍵時刻暴露出來,賦予在這些關鍵結點和元件進行互動的能力。

二、angular中總共有8個生命週期鉤子函式下面統一介紹

名稱 呼叫時機 介面名稱 範圍
ngOnChanges 當被繫結的輸入屬性的值發生變化時呼叫,首次呼叫一定會發生在 ngOnInit之前。 OnChanges 指令和元件
ngOnInit 在第一輪 ngOnChanges 完成之後呼叫。 ( 譯註:也就是說當每個輸入屬性的值都被觸發了一次 ngOnChanges 之後才會呼叫 ngOnInit ,此時所有輸入屬性都已經有了正確的初始繫結值 ) OnInit 指令和元件
ngDoCheck 在每個 Angular 變更檢測週期中呼叫。 DoCheck 指令和元件
ngAfterContentInit 當把內容投影進元件之後呼叫。 AfterContentInit 元件
ngAfterContentChecked 每次完成被投影元件內容的變更檢測之後呼叫。 AfterContentChecked 元件
ngAfterViewInit 初始化完元件檢視及其子檢視之後呼叫。after initializing the component’s views and child views. AfterViewInit 元件
ngAfterViewChecked 每次做完元件檢視和子檢視的變更檢測之後呼叫。 AfterViewChecked 元件
ngOnDestroy 當 Angular 每次銷燬指令 / 元件之前呼叫。 OnDestroy 指令和元件

三、檢視呼叫順序

//在app.component.html程式碼
<input type="text" [(ngModel)]="name" />
<app-life [item]="name"></app-life>
//在app.component.ts程式碼
import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { name:any = ""; }
//在life.component.html程式碼
<p>
    我是life元件
</p>
<p>我是從父元件輸入的內容:{{item}}</p>
//在life.component.ts程式碼
import { Component, OnInit,Input,OnChanges,SimpleChanges,DoCheck,AfterContentInit,AfterContentChecked,AfterViewInit,AfterViewChecked,OnDestroy} from '@angular/core';

@Component({
  selector: 'app-life',
  templateUrl: './life.component.html',
  styleUrls: ['./life.component.css']
})
export class LifeComponent implements OnInit,OnChanges,DoCheck,AfterContentInit,AfterContentChecked,AfterViewInit,AfterViewChecked,OnDestroy {
  @Input() item:any = "";
  index:number = 0;
  log(arg):void{
      console.log(`#${this.index}我是${arg}內容`);
      this.index ++;
  }
  constructor() {
      this.log("constructor");
  }

  ngOnInit() {
    this.log("ngOnInit");
  }
  ngOnChanges(changes:SimpleChanges){
    this.log("ngOnChanges");
  }
  ngDoCheck(){
    this.log("ngDoCheck");
  }
  ngAfterContentInit(){
    this.log("ngAfterContentInit");
  }
  ngAfterContentChecked(){
    this.log("ngAfterContentChecked");
  }
  ngAfterViewInit(){
    this.log("ngAfterViewInit");
  }
  ngAfterViewChecked(){
    this.log("ngAfterViewChecked");
  }
  ngOnDestroy(){
    this.log("ngOnDestroy");
  }
}
  • 1、專案初始化後執行效果如下:
    生命週期執行效果圖

  • 2、當用戶在輸入框輸入的時候,傳遞資料到子元件中執行效果如下:
    這裡寫圖片描述

  • 3、當滑鼠離開輸入框的時候谷歌控制檯的效果
    這裡寫圖片描述
  • 4、angular中變化檢測的鉤子函式有ngOnChanges、ngDocheck、ngAfterContentChecked、ngAfterViewChecked

四、ngOnChanges的介紹

  • 1、在父元件初始化
  • 2、修改子元件
    在上面兩種情況下會觸發ngOnChanges鉤子函式,把上面的程式碼修改下直接列印輸出值
ngOnChanges(changes:SimpleChanges){
    console.log(JSON.stringify(changes,null,2));
  }

執行輸出結果,會展示一個物件,顯示當前值與上一次的值
執行輸出結果

相關推薦

vue- Vue-Cli腳手架工具安裝 -建立專案-頁面開發流程-元件生命週期- -03

目錄 本部落格環境 Vue-Cli 專案環境搭建 與 python 基礎環境對比 環境搭建 建立啟動 vue 專案 命令建立專案(步驟小多)

Angular開發()-關於元件生命週期

一、說明 Angular每個元件都存在一個生命週期,從建立,變更到銷燬。Angular提供元件生命週期鉤子,把這些關鍵時刻暴露出來,賦予在這些關鍵結點和元件進行互動的能力。 二、angular中總共有8個生命週期鉤子函式下面統一介紹 名稱

React-Native開發三 React Native元件生命週期

1 前言 大家都知道React Native其實是由很多元件構成,開發RN介面的過程就是合理的組織各個元件的過程,在這其中需要不斷的拆分和優化元件。因此理解RN元件的生命週期很重要,這樣我們才能合理的在元件中進行我們的事務。 2 React Native元件生命週期 RN元件

angular元件生命週期

1、ngOnChanges:在ngOnInit之前, 當資料繫結輸入屬性的值發生變化時呼叫。 並且有一個SimpleChanges型別的引數,它其實是一個型別為SimpleChange,並且鍵值為屬性名的陣列: 2、ngOnInit:在第一次ngOnChange

Spring原始碼解析()——生命週期——BeanPostProcessor

https://blog.csdn.net/u011734144/article/details/72600932 http://www.cnblogs.com/lucas2/p/9430169.html   BeanPostProcessor:bean的後置處理器。在bean

關於Vue的元件,生命週期與路由

  父元件向子元件傳值: v-bind:content="father-components-data" 子元件利用props:[…] 接收每一個父元件傳過來的值 子元件向父元件傳值: this.$emit() 通過事件觸發向上一層觸發事件,父元件監聽此事件,獲取子

react元件生命週期鉤子函式

掛載期 constructor 資料接收 實現繼承super(props) componentWillMount 資料掛載之前 可以操作資料 不可以操作dom componentDidMount 資料掛載之後 可以操作資料和dom render 渲染元件 和 html 標籤 更新期

React從0到1--元件生命週期

1、React 嚴格定義了元件的生命週期,生命週期可能會經歷如下三個過程裝載過程( Mount),也就是把元件第一次在 DOM 樹中渲染的過程;更新過程( Update ),當元件被重新渲染的過程;解除安裝過程( Unmount),元件從 DOM 中刪除的過程 。 2、裝載過程 我們先來看裝載過程,當元件

React.js 時間元件 + 元件生命週期(更新模擬)

React是用於構建使用者介面的 JavaScript 庫,React 元件使用一個名為 render() 的方法, 接收資料作為輸入,輸出頁面中對應展示的內容。 React除了可以使用外部傳入的資料以外 (通過 this.props 訪問傳入資料), 元件還可以擁有其內部的狀態資料 (通過 this.

JavaEE-SSM:003 Mybatis的對映器及各元件生命週期

1.對映器是什麼? 它包含一個xml配置檔案和一個對應的Mapper介面 xml可以提供動態SQL,配置Sql引數型別,返回值型別,快取,重新整理,提供對映規則等 Mapper是對xml檔案的對映,實際上配置好xml檔案後就不再操作xml檔案,直接操作Mapper介面操作資料庫即可。

小程式自定義元件生命週期

created: function(){}, // 元件在記憶體中建立完畢執行 attached: function(){}, // 元件掛載之前執行 ready: function() {}, // 元件掛載後執行 detached: function(){}, // 元件移除執行 moved

Angular2--元件生命週期

元件初始化順序: constructor ngOnChanges ngOnInit ngDoCheck ngAfterContentInit ngAfterContentChecked ngAfterViewInit ngAfterViewChecked 變化

vue父子元件生命週期函式執行順序

vue父元件載入和銷燬執行最後一個鉤子函式之前先執行一遍子元件的鉤子: 1.載入 父:beforecreate-created-beforeMount-(子:beforecreate-created-beforeMount-mounted)-mounted 2.銷燬 父:beforeDestroy--

Spring註解開發系列(三)---生命週期

Bean的生命週期 Spring Bean 的生命週期在整個 Spring 中佔有很重要的位置,掌握這些可以加深對 Spring 的理解。 首先看下生命週期圖: 再談生命週期之前有一點需要先明確: Spring 只幫我們管理單例模式 Bean 的完整生命週期,對於 prototype 的 bean

建設滿足新形勢下保險業務需求的微服務管理平臺和配套工具規範,能夠支撐微服務的開發、執行生命週期管理。

轉載本文需註明出處:EAWorld,違者必究。 引言: 根據保險行業發展趨勢,目前保險交易已經呈現高頻化、碎片化、場景化等特點,對系統的處理能力、容量、業務連續性、需求相應速度、運維響應速度提出了更高的要求。業務模式創新重塑導致系統更新頻繁、應用複雜度急劇升高,傳統架構不堪重負,敏捷開發和快速

ReactNative入門教程-元件生命週期函式

1.元件例項化階段 defaultProps: 設定元件的初始屬性值,比如設定預設Color,width等,可以在通過this.props獲取相應的值 constructor(props): 這裡通過this.props可以獲取defaultProps設定的預設屬性值,同時這裡

RN元件生命週期

在Android 和IOS我們都知道元件都有生命週期,RN的元件依舊不例外; 方法名 作用 呼叫次數 constructor 建構函式,初始化需要state 1次

React元件生命週期

React元件在生命週期裡面大概有兩種情況,一種是初次渲染,一種是狀態更新導致再次渲染。咱們從元件生命週期的每一步可進行的操作的角度來了解一下。 初次渲染 建構函式,指定This,初始狀態,繫結函式(constructor) constructor(prop

Spring註解驅動開發——bean的生命週期

Bean的生命週期:bean建立->初始化->銷燬的過程,由容器來管理,容器會在bean進行到當前生命週期時呼叫我們自定義的初始化和銷燬方法 1、通過@Bean的屬性指定初始化和銷燬方法:這兩個方法必須是無入參的 public class Car { pu

React 入門學習筆記整理()—— 生命週期

(1)react 生命週期 只有類元件有生命週期,函式元件沒有生命週期 1、掛載階段:這些方法會在元件例項被建立和插入DOM中時被呼叫: 1)constructor(props) 初始化元件的狀態、繫結方法,可以在建構函式中完成。 注意:狀態不會隨著屬性的更新而更新。為了保證屬性和狀態同步,通常需要狀