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 相关文章推荐
javascript客户端解决方案 缓存提供程序
Jul 14 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
Sep 29 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
Oct 04 Javascript
JavaScript对内存分配及管理机制详细解析
Nov 11 Javascript
js获取url中的参数且参数为中文时通过js解码
Mar 19 Javascript
JavaScript获取页面中表单(form)数量的方法
Apr 03 Javascript
bootstrap-treeview自定义双击事件实现方法
Jan 09 Javascript
基于jQuery日历插件制作日历
Mar 11 Javascript
Javascript 调用 ActionScript 的简单方法
Sep 22 Javascript
vue2.0中goods选购栏滚动算法的实现代码
May 17 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
Apr 27 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的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
Python正则表达式匹配HTML页面编码
2015/04/08 Python
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
简单介绍Python中的try和finally和with方法
2015/05/05 Python
Python入门之后再看点什么好?
2018/03/05 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
用Python shell简化开发
2018/08/08 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
建筑工程专业大学生求职信
2014/04/23 职场文书
技术负责人任命书
2014/06/05 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
体育活动总结
2015/02/04 职场文书
烛光里的微笑观后感
2015/06/17 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
创业计划书之农家乐
2019/10/09 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL