详解Angular 中 ngOnInit 和 constructor 使用场景
constructor
- constructor是ES6引入类这个概念后出现的,和angular本身没有关系,constructor会在类生成实例时调用。angular无法控制constructor。
- constructor调用优先于所有生命周期函数
- constructor一般用于依赖注入,变量静态初始化且尽可能逻辑简单
ngOnInit
Angular生命周期一览 (有关check的钩子都是多次调用)
- ngOnChanges -- 当被绑定的输入属性
Input()的值发生变化时调用,没有则不触发。首次调用一定会发生在ngOnInit()之前。 - ngOnInit() -- 在Angular第一次显示数据绑定和设置指令/组件的输入属性之后,初始化指令/组件。在第一轮ngOnChanges()完成之后调用,只调用一次。
- ngDoCheck -- 自定义的方法,用于检测和处理值的改变。
多次调用 - ngAfterContentInit -- 在组件内容初始化之后调用,只适用于组件
- ngAfterContentChecked -- 组件每次检查内容时调用,只适用于组件
多次调用 - ngAfterViewInit -- 组件相应的视图初始化之后调用,只适用于组件
- ngAfterViewChecked -- 组件每次检查视图时调用,只适用于组件
多次调用 - ngOnDestroy -- 当Angular每次销毁指令/组件之前调用并清扫。在这儿反订阅可观察对象和分离事件处理器,清空定时器,以防内存泄漏。
注:check有关的钩子即使我移动鼠标都会触发,上一个页面没有清掉定时器也会一直不停的触发
主要用途
- 变量动态初始化(sessionStorage数据持久化赋值等)
- 组件通信
- 异步Ajax请求数据