小编典典

构造函数和 ngOnInit 的区别

all

Angular 默认提供生命周期钩子ngOnInit

为什么应该ngOnInit使用,如果我们已经有一个constructor


阅读 242

收藏
2022-02-25

共1个答案

小编典典

Constructor是类的默认方法,在类被实例化时执行,并确保类及其子类中的字段的正确初始化。Angular 或更好的依赖注入器 (DI)
分析构造函数参数,并在通过调用它创建新实例new MyClass()时尝试查找与构造函数参数类型匹配的提供程序,解析它们并将它们传递给构造函数,例如

new MyClass(someArg);

ngOnInit是 Angular 调用的生命周期钩子,用于指示 Angular 已完成创建组件。

我们必须OnInit像这样导入才能使用它(实际上实施OnInit不是强制性的,但被认为是好的做法):

import { Component, OnInit } from '@angular/core';

然后要使用该方法OnInit,我们必须像这样实现该类:

export class App implements OnInit {
  constructor() {
     // Called first time before the ngOnInit()
  }

  ngOnInit() {
     // Called after the constructor and called  after the first ngOnChanges() 
  }
}

在您的指令的数据绑定属性初始化后,实现此接口以执行自定义初始化逻辑。ngOnInit
在第一次检查指令的数据绑定属性之后,并且在检查其任何子项之前立即调用。当指令被实例化时,它只被调用一次。

大多数情况下,我们ngOnInit用于所有初始化/声明,并避免在构造函数中工作。构造函数应该只用于初始化类成员,而不应该做实际的“工作”。

所以你应该使用constructor()设置依赖注入而不是其他。ngOnInit() 是“开始”的更好地方——它是解决组件绑定的地方/时间。

2022-02-25