Angular doc here您可以看到下面的实现方式。即在formBuilder
中声明constructor()
和服务。我知道在constructor()
内部使用服务是一种不良做法。即我们需要使用ngOnInit()
。但是我也使用constructor()
声明formBuilder
属性。这是不好的做法吗?我也需要使用ngOnInit()
吗?在formBuilder
创建之前,页面创建将一直保持吗?
export class CartComponent {
items;
checkoutForm;
constructor(
private cartService: CartService,
private formBuilder: FormBuilder,
) {
this.items = this.cartService.getItems();
this.checkoutForm = this.formBuilder.group({
name: '',
address: ''
});
}
}
最佳答案
简短的回答,是的,您应该将大多数初始化逻辑保留在ngOnInit
生命周期挂钩中。
根据OnInit的角度文档,它用于
在构造后不久执行复杂的初始化。
在Angular设置输入属性后设置组件。
因此,执行逻辑操作(例如获取数据以及在ngOnInit
lifeycle钩子上初始化Formbuilder)将更加干净。
您应该查看Angular团队负责人Misko Hevery的post,他概述了保持构造函数整洁的多种原因。