实例化组件类并渲染组件及其子组件时,组件的生命周期就开始了。
生命周期伴随着变更检测,检测数据绑定属性何时发生变化,并按需更新视图和组件实例。
销毁组件实例并从 DOM 中移除时渲染模板时,生命周期就结束了。
生命周期是组件创建、更新、销毁的过程。
- ngOnChanges()
- 触发时机:在 ngOnInit() 之前;父传子(只要父操作传输值改变),子组件的此方法触发。
- 用途:监听父组件值(传输值)的改变。注意,发生频繁影响性能。
- ngOnInit()
- 触发时机:在 第一轮 ngOnChanges 之后调用,只调用一次。
- 用途:初始化组件、指令。不可获取 DOM 元素。
- ngDoCheck()
- 调用时机:在 ngOnInit 之后;ngOnChanges 每次变更检测后;当前页面数据属性发生变化时。
- 用途:检测 ,并发生在 angular 无法或者不愿意自己检测的变化时。
- ngAfterContentInit()
- 调用时机:第一次 ngDoCheck 之后,只调用一次。
- 用途:将内容投影进组件视图或指令所在的视图。
- ngAfterContentChecked()
- 调用时机:ngAfterContentInit 之后执行;在 ngDoCheck 变更检测后执行。
- 用途:检测被投影到组件或指令内容。
- ngAfterViewInit()
- 调用时机:第一次 ngAfterContentChecked 之后,只调用一次。
- 用途:组件及其子组件、指令视图加载完毕,可获取 DOM 元素。
- ngAfterViewChecked()
- 调用时机:ngAfterViewInit 之后;ngAfterContentChecked 变更检测之后。
- 用途:做完组件、子组件、指令视图变更检测
- ngOnDestroy()
- 调用时机:销毁组件或指令前立即调用
- 用途:反订阅可观察对象和分离事件处理器,防止内存泄漏。