我知道ngOnInit()
和构造函数不同的一些事实。我也遇到过许多例子,其中服务是在ngOnInit()
方法中定义的,而不是在构造函数中定义的。
但是Angular并不禁止在构造函数级别使用服务。如果是这样的话,与在ngOInit()
定义服务相比,这样做有什么好处?
示例:
export class App implements OnInit{
constructor(private userService: UserService){
userService.getDetails();
}
ngOnInit(){
userService.getDetails();
}
ngOnInit()
钩子是Angular生命周期钩子之一。正如您所注意到的那样,您提供的示例是有效的,但它是有限的,因为您不能访问构造函数中的任何@Input()
变量。因此,如果您想将一个来自@Input()
变量的参数传递给您的服务函数,那么您的模式将不起作用。作为一种好的做法,在初始化组件时始终使用ngOnInit()
而不是构造函数,因为一切都会很好地工作,而构造函数模式不会适用于每个用例。