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
的映射对象,包括新值和旧值
ngOnInit
在第一轮ngOnChanges完成以后调用,发生于构造函数以后,用于初始化指令/组件,注意用于数据绑定的属性处理。
范围:指令和组件 , 接口名称: OnInit
开发业务中咱们常常在ngOnInit
作一些初始化的工做,而这些工做尽可能要避免在constructor
中进行,constructor
中应该只进行依赖注入而不是进行真正的业务操做
ngDoCheck
在每一个Angular变动检测周期中调用,用于变动的检测
范围:指令和组件 接口名称:DoCheck
Angular的变动检测机制配合zone.js来实现,保证组件变化和页面变化同步,浏览器中任何异步事件都会触发检测机制 , 检测模板全部绑定属性,若改变则相应区域会被更新。 须要注意的是:变动检测机制只会把组件属性的改变反应到模板上,不会改变组件值
ngAfterContentInit
当把内容投影进组件以后调用。
范围:组件 , 接口:AfterContentInit
ngAfterContentChecked
每次完成被投影组件内容的变动检测以后调用。
范围:组件 , 接口: AfterContentChecked
ngAfterViewInit
: 初始化完组件视图及其子视图以后调用
范围:组件 , 接口:AfterViewInit
ngAfterViewChecked
每次作完组件视图喝子视图的变动检测以后调用
范围:组件 , 接口 : AfterViewChecked
ngOnDestroy
当Angular每次销毁指令/组件以前调用
范围:指令和组件 , 接口:OnDestroy