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 相关文章推荐
jWiard 基于JQuery的强大的向导控件介绍
Oct 28 Javascript
js读取注册表的键值示例
Sep 25 Javascript
js中settimeout方法加参数的使用实例
Feb 27 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
May 04 Javascript
使用JavaScript和C#中获得referer
Nov 14 Javascript
Express的路由详解
Dec 10 Javascript
原生js简单实现放大镜特效
May 16 Javascript
浅谈angular.copy() 深拷贝
Sep 14 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
Sep 26 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
详解vuex的简单todolist例子
Jul 14 Javascript
vue实现购物车的监听
Apr 20 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
玩转虚拟域名◎+ .
2006/10/09 PHP
用PHP和ACCESS写聊天室(六)
2006/10/09 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
浅谈JavaScript 标准对象
2016/06/02 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
基于vue手写tree插件的那点事儿
2019/08/20 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python实现360的字符显示界面
2014/02/21 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
详解Python yaml模块
2020/09/23 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
html5时钟实现代码
2010/10/22 HTML / CSS
高分子材料个人求职信范文
2013/09/25 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
大学生找工作求职信
2014/07/09 职场文书
公司承诺函范文
2015/01/21 职场文书
护士医德医风心得体会
2016/01/25 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
vue实现在data里引入相对路径
2022/06/05 Vue.js