构造函数和ngOnInit之间的区别

Angular默认情况下提供生命周期挂钩ngOnInit

如果我们已经有了构造函数,为什么要使用ngOnInit

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

新MyClass(someArg);

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

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

从'@angular/core'导入{Component,OnInit};

然后要使用方法OnInit,我们必须实现如下类:

导出类应用程序实现OnInit{
构造函数(){
//在ngOnInit()之前第一次调用
}
恩戈尼尼特(){
//在构造函数之后调用,并在第一个ngOnChanges()之后调用
}
}

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

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

因此,您应该使用constructor()来设置依赖项注入,而不是其他。ngOnInit()是一个更好的“起点”——它是解决组件绑定的位置/时间

有关更多信息,请参阅此处:

  • https://angular.io/api/core/OnInit

  • 角度分量构造函数Vs OnInit

发表评论