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 相关文章推荐
JQuery中$.ajax()方法参数详解及应用
Dec 12 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
javascript制作sql转换为stringBuffer的小工具
Apr 03 Javascript
深入理解MVC中的时间js格式化
May 19 Javascript
js中创建对象的几种方式
Feb 05 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 Javascript
JS实现搜索关键词的智能提示功能
Jul 07 Javascript
浅谈Angular2 模块懒加载的方法
Oct 04 Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
Jan 03 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
Jan 27 Javascript
vuex实现购物车的增加减少移除
Jun 28 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
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
用js实现计算加载页面所用的时间
2010/04/02 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
js定时器实例分享
2016/12/20 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
Python建立Map写Excel表实例解析
2018/01/17 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
巴西手表购物网站:eclock
2019/03/19 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
音乐器材管理制度
2014/01/31 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
2014年班主任工作总结
2014/11/08 职场文书
2014财务年度工作总结
2014/11/11 职场文书
年度考核表个人总结
2015/03/06 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书