Angular学习二--生命周期

1.生命周期钩子函数

  1. ngOnchanges :当被绑定的输入属性的值发生变化时调用,首次调用必定会发生在ngOnInit以前。 范围:指令和组件 ,接口名称: OnChanges数组

    #1.ngOnchanges 在父组件(初始化或修改)子组件的输入参数下调用, 用在有输入属性的子组件浏览器

    用处:当Angular设置数据绑定输入属性发生变化时响应.异步

    时机: 当被绑定的输入属性的值发生变化时调用,不过首次调用是会发生在ngOnInit()以前的函数

    ngOnChanges() 方法获取了一个对象,它能够同时观测1个/多个绑定的属性值,它把每一个发生变化的属性名都映射到了一个SimpleChange对象,该对象中有属性的当前值和前一个值code

    触发条件:对象

    @input属性(输入属性)发生变化时,会调用.非此属性,不会调用接口

    当输入属性对象时,当对象的属性值发生变化时,不会调用,当对象的引用变化时触发生命周期

    输入属性,使用@input 装饰的属性,这里还须要注意不可变对象,在angular中,典型的不可变对象是string类型,但全部的自定义对象均为可变对象, 如user:{name : string } ,可变对象即便被定义为输入属性,也不会触发OnChanges方法,当修改子组件参数时,只有如下状况ngOnchanges才会被调用事件

    输入属性@input()属性内存

    不可变对象: undefined , null , boolean ,number , string

    可变对象:对象(包括数组和函数)

    可变对象

    var greeting = 'hello'

    greeting = 'hello world'

    greeting的值发生改变,由于其指向的字符串地址从hello指向了hello world

    不可变对象

    var user = { name :Tom }

    user.name = 'Jim'

    user的指向的内存地址并无改变,改变的是user对象中的name属性 ngOnChanges钩子接收一个类型为SimpleChange 的映射对象,包括新值和旧值

  2. ngOnInit 在第一轮ngOnChanges完成以后调用,发生于构造函数以后,用于初始化指令/组件,注意用于数据绑定的属性处理。

    范围:指令和组件 , 接口名称: OnInit

开发业务中咱们常常在ngOnInit 作一些初始化的工做,而这些工做尽可能要避免在constructor中进行,constructor 中应该只进行依赖注入而不是进行真正的业务操做

  1. ngDoCheck 在每一个Angular变动检测周期中调用,用于变动的检测

    范围:指令和组件 接口名称:DoCheck

Angular的变动检测机制配合zone.js来实现,保证组件变化和页面变化同步,浏览器中任何异步事件都会触发检测机制 , 检测模板全部绑定属性,若改变则相应区域会被更新。 须要注意的是:变动检测机制只会把组件属性的改变反应到模板上,不会改变组件值

  1. ngAfterContentInit 当把内容投影进组件以后调用。

    范围:组件 , 接口:AfterContentInit

  2. ngAfterContentChecked 每次完成被投影组件内容的变动检测以后调用。

    范围:组件 , 接口: AfterContentChecked

  3. ngAfterViewInit: 初始化完组件视图及其子视图以后调用

    范围:组件 , 接口:AfterViewInit

  4. ngAfterViewChecked 每次作完组件视图喝子视图的变动检测以后调用

    范围:组件 , 接口 : AfterViewChecked

  5. ngOnDestroy 当Angular每次销毁指令/组件以前调用

    范围:指令和组件 , 接口:OnDestroy

相关文章
相关标签/搜索