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 相关文章推荐
一端时间轮换的广告
Jun 26 Javascript
javaScript 数值型和字符串型之间的转换
Jul 25 Javascript
Jquery AJAX 框架的使用方法
Nov 03 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
Jun 28 Javascript
jQuery extend 的简单实例
Sep 18 Javascript
JS拉起或下载app的实现代码
Feb 22 Javascript
Vue2.0使用过程常见的一些问题总结学习
Apr 10 Javascript
Cookies 和 Session的详解及区别
Apr 21 Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
Dec 08 Javascript
js中的面向对象之对象常见创建方法详解
Dec 16 Javascript
javascript-hashchange事件和历史状态管理实例分析
Apr 18 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加MYSQL服务器
2006/10/09 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
react-native 封装选择弹出框示例(试用ios&android)
2017/07/11 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python实现dijkstra最短路由算法
2019/01/17 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
Python 下载及安装详细步骤
2019/11/04 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
学术会议欢迎词
2014/01/09 职场文书
总经理岗位职责范本
2014/02/02 职场文书
《木笛》教学反思
2014/03/01 职场文书
慰问信格式规范
2015/03/23 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL
DE1103使用报告
2022/04/05 无线电