面试题答案
一键面试钩子函数 | 触发时机 | 实际开发应用场景 |
---|---|---|
ngOnInit | 组件初始化完成后调用,此时组件的输入属性已被绑定,但是视图还未渲染 | 用于组件数据的初始化,如获取后端数据、设置默认值等。例如从API获取用户信息并显示在组件中。 |
ngOnChanges | 当组件的输入属性(@Input()装饰的属性)发生变化时触发,首次初始化时也会触发 | 用于监听输入属性的变化,并根据新值执行相应操作。比如在父子组件通信中,父组件传递新数据给子组件,子组件可以在ngOnChanges 中响应新数据变化做相应处理。 |
ngDoCheck | 每个变更检测周期都会触发 | 用于实现自定义的变更检测逻辑,当默认的Angular变更检测机制不能满足需求时使用。例如检测一些复杂对象内部属性的变化,Angular默认检测不到这种变化,就可以在此函数内自定义检测逻辑。 |
ngAfterViewInit | 组件的视图(包括子视图)初始化完成后调用 | 通常用于操作视图相关的DOM元素,因为此时视图已渲染完成,可以安全地获取和操作DOM。比如初始化第三方UI库的组件,这些组件往往依赖于真实DOM结构才能正常工作。 |
ngOnDestroy | 组件销毁前调用 | 用于执行清理工作,如取消订阅可观察对象(防止内存泄漏)、解绑事件监听器等。例如取消HTTP请求订阅,避免组件销毁后仍有未完成的请求占用资源。 |