在ngOnInit而不是Angular的Constructor中定义服务的好处

时间:2018-11-04 19:31:52

标签: angular angular-httpclient ngoninit

我知道ngOnInit()和构造函数不同的一些事实。我也碰到过很多例子,其中服务是在ngOnInit()方法中定义的,而不是在构造函数中定义的,反之亦然。

但是Angular禁止在构造函数级别使用服务。与ngOInit()上定义服务相比,这样做是否带来了什么好处?

示例:

 export class App implements OnInit{

 constructor(private userService: UserService){
     userService.getDetails();
 }

 ngOnInit(){
    userService.getDetails(); 
 }  

1 个答案:

答案 0 :(得分:1)

ngOnInit()挂钩是Angular生命周期挂钩之一。 您提供的示例可以像您注意到的那样工作,但是它受到限制,因为您无法访问构造函数中的任何@Input()变量。因此,如果要将参数从@Input()传递到服务函数,则您的模式将不起作用。 作为一种好习惯,请始终使用ngOnInit()而不是构造函数来进行组件初始化,因为一切都会正常进行,而构造函数模式并不能在每个用例中都起作用。