Angular2生命周期钩子函数的详细介绍


Posted in Javascript onJuly 10, 2017

Angular每个组件都存在一个生命周期,从创建,变更到销毁。Angular提供组件生命周期钩子,把这些关键时刻暴露出来,赋予在这些关键结点和组件进行交互的能力,掌握生命周期,可以让我们更好的开发Angular应用

概述

每个接口都有唯一的一个钩子方法,它们的名字是由接口名再加上ng前缀构成的。比如,OnInit接口的钩子方法叫做ngOnInit, Angular在创建组件后立刻调用它

Angular2生命周期钩子函数的详细介绍

生命周期执行顺序

ngOnChanges

在有输入属性的情况下才会调用,该方法接受当前和上一属性值的SimpleChanges对象。如果有输入属性,会在ngOnInit之前调用。

ngOnInit

在组件初始化的时候调用,只调用一次,在第一次调用ngOnChanges之后调用

ngDoCheck

在组件定义的属性或方法变更时调用(用于脏值之检测,非常耗性能,因为会把所有的属性和方法都检测一遍),会在ngOnChanges()和ngOnInit()之后

ngAfterContentInit

在组件内容初始化之后调用,在第一次ngDoCheck之后调用,只调用一次

ngAfterContentChecked

在组件每次检查内容放生变更时调用。在ngAfterContentInit和每次ngDoCheck之后调用

ngAfterViewInit

在组件相应的视图初始化之后调用,第一次ngAfterContentChecked之后调用,只调用一次

ngAfterViewChecked

在组件每次检查视图发生变更时调用。ngAfterViewInit和每次ngAfterContentChecked之后调用。

ngOnDestroy

在组件销毁前调用,做一些清理工作,比如退订可观察对象和移除事件处理器,以免导致内存泄漏。

Angular2生命周期钩子函数的详细介绍

上面代码书写是按顺序的,看下面控制台打印

Angular2生命周期钩子函数的详细介绍

现在我们钩子函数的顺序打乱,在看看代码

Angular2生命周期钩子函数的详细介绍

控制台输出跟上面是一样的

Angular2生命周期钩子函数的详细介绍

constructor和ngOnInit

constructor是ES6中class中新增的属性,当class类实例化的时候调用constructor,来初始化类。Angular中的组件就是基于class类实现的,在Angular中,constructor用于注入依赖。

Angular2生命周期钩子函数的详细介绍

ngOnInit是Angular中生命周期的一部分,在constructor后执行。在Angular中用于初始化变量和数据绑定等

Angular2生命周期钩子函数的详细介绍

NgChanges

当我们监听了OnChanges钩子。 一旦检测到该组件(或指令)的输入属性发生了变化,Agular就会调用ngOnChanges()方法

Angular2生命周期钩子函数的详细介绍

效果演示

Angular2生命周期钩子函数的详细介绍

DoCheck

当组件中属性或函数发生变化时DoCheck会执行脏值检测,遍历所有变量

Angular2生命周期钩子函数的详细介绍

效果演示

Angular2生命周期钩子函数的详细介绍

个人学习心得,大神路过,不喜勿喷?,如果代码有错误,欢迎纠正同时也欢迎交流

感谢阅读,希望能帮助到大家,也希望大家多多支持三水点靠木!

Javascript 相关文章推荐
IE与FireFox的兼容性问题分析
Apr 22 Javascript
MooTools 1.2介绍
Sep 14 Javascript
JavaScript简单实现鼠标拖动选择功能
Mar 06 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
May 05 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
May 16 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
Sep 01 Javascript
node.js中使用socket.io的方法
Dec 15 Javascript
jQuery在线选座位插件seat-charts特效代码分享
Aug 27 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
Jun 20 Javascript
JavaScript原生节点操作小结
Jan 17 Javascript
详解vue项目接入微信JSSDK的坑
Dec 14 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
Nov 16 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
Jul 10 #Javascript
在vue中获取dom元素内容的方法
Jul 10 #Javascript
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 #jQuery
vue移动端裁剪图片结合插件Cropper的使用实例代码
Jul 10 #Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
Jul 10 #Javascript
Javascript调试之console对象——你不知道的一些小技巧
Jul 10 #Javascript
vue实现表格数据的增删改查
Jul 10 #Javascript
You might like
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
PHP实现文件上传功能实例代码
2017/05/18 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
2007/02/09 Javascript
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
简单的js表单验证函数
2013/10/28 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
Move.js入门
2017/02/08 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
详解python while 函数及while和for的区别
2018/09/07 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
如何用python写个模板引擎
2021/01/14 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
final, finally, finalize的区别
2012/03/01 面试题
校园报刊亭创业计划书
2014/01/02 职场文书
揭牌仪式主持词
2014/03/19 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
科学育儿宣传标语
2014/10/08 职场文书
外国人来华邀请函
2015/01/31 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
Python爬虫基础讲解之请求
2021/05/13 Python
分享提高 Python 代码的可读性的技巧
2022/03/03 Python
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS