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

 更新时间:2017年07月10日 14:25:10   作者:小处成就大事  
这篇文章主要介绍了Angular2生命周期钩子函数的详细介绍,Angular提供组件生命周期钩子,可以让我们更好的开发Angular应用,有兴趣的可以了解一下

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

概述

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


生命周期执行顺序

ngOnChanges

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

ngOnInit

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

ngDoCheck

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

ngAfterContentInit

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

ngAfterContentChecked

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

ngAfterViewInit

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

ngAfterViewChecked

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

ngOnDestroy

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


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


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


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


constructor和ngOnInit

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


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


NgChanges

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


效果演示


DoCheck

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


效果演示


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

感谢阅读,希望能帮助到大家,也希望大家多多支持脚本之家!

相关文章

  • Angular+Node生成随机数的方法

    Angular+Node生成随机数的方法

    这篇文章主要介绍了Angular+Node生成随机数的方法,结合具体实例分析了Angular与Node结合控制前后端实现随机数功能的相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • angular2组件中定时刷新并清除定时器的实例讲解

    angular2组件中定时刷新并清除定时器的实例讲解

    今天小编就为大家分享一篇angular2组件中定时刷新并清除定时器的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Angular实现跨域(搜索框的下拉列表)

    Angular实现跨域(搜索框的下拉列表)

    angular.js 自带jsonp,实现跨域,下面来实现搜索框的下拉列表功能,本文思路明确,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-02-02
  • 详解angularjs利用ui-route异步加载组件

    详解angularjs利用ui-route异步加载组件

    本篇文章主要介绍了详解angularjs利用ui-route异步加载组件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Angular在模板驱动表单中自定义校验器的方法

    Angular在模板驱动表单中自定义校验器的方法

    本章介绍的是如何对模板驱动表单创建自定义校验器,它相比较响应式表单自定义校验器略为复杂一些。接下来通过本文给大家分享Angular在模板驱动表单中自定义校验器的方法,感兴趣的朋友一起看看吧
    2017-08-08
  • AngularJS执行流程详解

    AngularJS执行流程详解

    本文主要介绍了AngularJS的执行流程。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Angular学习笔记之angular的$filter服务浅析

    Angular学习笔记之angular的$filter服务浅析

    本文是小编记录的angular学习笔记,通过本文首先给大家介绍了$filter服务,然后介绍下内置filter及filter的简单使用,非常不错具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-11-11
  • Angularjs中使用Filters详解

    Angularjs中使用Filters详解

    本文给大家总结了下在Angularjs的模板、控制器、或者服务中使用Filters的方法,有需要的小伙伴可以参考下
    2016-03-03
  • AngularJS HTML DOM详解及示例代码

    AngularJS HTML DOM详解及示例代码

    本文主要介绍AngularJS HTML DOM基础知识,这里整理了相关资料和示例代码进行详解,有需要的小伙伴可以参考下
    2016-08-08
  • AngularJS 模块化详解及实例代码

    AngularJS 模块化详解及实例代码

    这篇文章主要介绍了AngularJS 模块化,这里整理了详细的资料及简单实例代码,实现效果图,有需要的小伙伴可以参考下
    2016-09-09

最新评论