Angular2生命週期鉤子函式

2021-08-03 14:49:55 字數 3412 閱讀 5133

angular每個元件都存在乙個生命週期,從建立,變更到銷毀。angular提供元件生命週期鉤子,把這些關鍵時刻暴露出來,賦予在這些關鍵結點和元件進行互動的能力,掌握生命週期,可以讓我們更好的開發angular應用 概述

每個介面都有唯一的乙個鉤子方法,它們的名字是由介面名再加上ng字首構成的。比如,oninit介面的鉤子方法叫做ngoninit, angular在建立元件後立刻呼叫它

importfrom'@angular/core'

,templateurl: './parent.component.html'

,styleurls: ['./parent.component.css']

})export classparentcomponentimplementsoninit

}

生命週期執行順序

ngonchanges

在有輸入屬性的情況下才會呼叫,該方法接受當前和上一屬性值的******changes物件。如果有輸入屬性,會在ngoninit之前呼叫。

ngoninit

在元件初始化的時候呼叫,只呼叫一次,在第一次呼叫ngonchanges之後呼叫

ngdocheck

在元件定義的屬性或方法變更時呼叫(用於髒值之檢測,非常耗效能,因為會把所有的屬性和方法都檢測一遍),會在ngonchanges()和ngoninit()之後

ngaftercontentinit

在元件內容初始化之後呼叫,在第一次ngdocheck之後呼叫,只呼叫一次

ngaftercontentchecked

在元件每次檢查內容放生變更時呼叫。在ngaftercontentinit和每次ngdocheck之後呼叫

ngafterviewinit

在元件相應的檢視初始化之後呼叫,第一次ngaftercontentchecked之後呼叫,只呼叫一次

ngafterviewchecked

在元件每次檢查檢視發生變更時呼叫。ngafterviewinit和每次ngaftercontentchecked之後呼叫。

ngondestroy

在元件銷毀前呼叫,做一些清理工作,比如退訂可觀察物件和移除事件處理器,以免導致記憶體洩漏。

importfrom'@angular/core'

,templateurl: './childen.component.html'

,styleurls: ['./childen.component.css']

})export classchildencomponent

ngonchanges(changes: ******changes)

ngoninit()

ngdocheck()

ngaftercontentinit()

ngaftercontentchecked()

ngafterviewinit()

ngafterviewchecked()

ngondestroy()

}

上面**書寫是按順序的,看下面控制台列印

現在我們鉤子函式的順序打亂,在看看**

importfrom'@angular/core'

,templateurl: './childen.component.html'

,styleurls: ['./childen.component.css']

})export classchildencomponent

ngondestroy()

ngaftercontentinit()

ngaftercontentchecked()

ngafterviewinit()

ngonchanges(changes: ******changes)

ngafterviewchecked()

ngdocheck()

ngoninit()

}

控制台輸出跟上面是一樣的。

constructor和ngoninit

constructor是es6中class中新增的屬性,當class類例項化的時候呼叫constructor,來初始化類。angular中的元件就是基於class類實現的,在angular中,constructor用於注入依賴。

export classchildencomponent 

}

ngoninit是angular中生命週期的一部分,在constructor後執行。在angular中用於初始化變數和資料繫結等

export classchildenconent 

}

importfrom'@angular/core'

,templateurl: './childen.component.html'

,styleurls: ['./childen.component.css']

})export classchildencomponentimplementsonchanges

ngonchanges(changes: ******changes)

}

效果演示

docheck

當元件中屬性或函式發生變化時docheck會執行髒值檢測,遍歷所有變數。

importfrom'@angular/core'

,templateurl: './parent.component.html'

,styleurls: ['./parent.component.css']

})export classparentcomponent ;

ngdocheck()

}

效果演示

個人學習心得,大神路過 ,不喜勿噴

Angular2 生命週期

元件生命週期鉤子 指令和元件的例項有乙個生命週期 新建 更新和銷毀。每個介面都有唯一的乙個鉤子方法,它們的名字是由介面名加上ng字首構成的。比如,oninit介面的鉤子方法叫做ngoninit。指令和元件 ngoninit 當angular初始化完成資料繫結的輸入屬性後,用來初始化指令或者元件。ng...

angular2 生命週期

ngonchanges 當資料繫結輸入屬性的值發生變化時呼叫 ngoninit 在第一次 ngonchanges 後呼叫 ngdocheck 自定義的方法,用於檢測和處理值的改變 ngaftercontentinit 在元件內容初始化之後呼叫 ngaftercontentchecked 元件每次檢查...

Angular學習 三 生命週期鉤子

angular提供了生命週期鉤子,把這些關鍵生命時刻暴露出來,賦予我們在它們發生時採取行動的能力。可以將鉤子函式理解為在合適的時候做合適的事情。官方給出的解釋是 每個元件都有乙個被 angular 管理的生命週期。angular 建立它,渲染它,建立並渲染它的子元件,在它被繫結的屬性發生變化時檢查它...