一、初始化阶段
1、constructor
Angular在实例化组件类时执行,可以用来接收Angular注入的服务实例对象;
可以获取到引入的实例,还获取不到接收的属性值
2、ngOnInit
在首次接收到输入属性值后执行,在此处可以执行请求操作
在此可以打印接收到的属性值
3、ngAfterContentInit
在内容投影渲染后调用
(@ContentChild("ContentName") content:ElementRef<类型>)
4、ngAfterViewInit
组件视图渲染完成之后调用
(@ViewChild("ComponentName") Component:ElementRef<类型>)
二、更新阶段
5、ngOnChanges(changes:SimpleChange)
1)、当输入属性值发生变化时执行,初始设置时也会执行一次,顺序优于ngOnInit。只是ngOnInit只在初始化时执行一次,ngOnChanges在输入属性值每次变化时都会执行。
2)、不论多少输入属性值同时变化,钩子函数只会执行一次,变化的值会同时存储在参数中
3)、参数类型为SimpleChanges,子属性类型为SimpleChange:{当前值,是否第一次变化,旧值}
4)、对于基本数据类型来说,只要值发生变化就可以被检测到
5)、对于引用数据类型来说,可以检测从一个对象变成另一个对象,但是检测不到同一个对象中属性的变化,但是不影响组件模板更新数据
6、ngDoCheck(不常用,执行频率高,代价大)
主要用于调试,只要输入属性发生变化,不论基本数据类型还是引用数据类型中的属性变化,都会执行
7、ngAfterContentChecked
内容投影更新完成后执行
8、ngAfterViewChecked
组件视图更新完成后执行
三、卸载阶段
9、ngOnDestroy
当组件被销毁之前调用,用于清理操作(事件清理,定时器清理等等 )