如other responses所示,应该在ngOnInit()方法中启动Angular2应用程序的初始例程,使构造函数专门用于依赖注入。
但是,在我关注的Reactive Forms tutorial中,表单的初始化在构造函数中:
export class HeroDetailComponent3 {
heroForm: FormGroup; // <--- heroForm is of type FormGroup
constructor(private fb: FormBuilder) { // <--- inject FormBuilder
this.createForm();
}
createForm() {
this.heroForm = this.fb.group({
name: '', // <--- the FormControl called "name"
});
}
}
真的存在重大差异,还是只是一个小问题?
答案 0 :(得分:2)
初始化formGroup
中的ngOnInit()
并不是一种不好的做法,因为如果您希望使用依赖于(直接或间接)组件{{}的值初始化表单,则实际需要它。 1}} S上。
例如:
@Input()
答案 1 :(得分:1)
我相信它,因为构造函数中的createForm方法将在ngOninit之前执行,并且您的表单将在渲染组件后立即可用。
答案 2 :(得分:0)
取决于您的特定用例和设计。可能会遇到与get
方法有关的问题,而其他formControls
的某些方法可能会依赖这些方法。您可能会受益于在构造函数中创建表单,并且一旦呈现组件,表单就将准备就绪。但是,如果您需要对表单subscribe
进行.valueChanges
至formControls
的操作,则可能会出现计时问题。除非您formControls
,否则您无法建立依赖的.subscribe
,并且在初始化表单之前,您不能.subscribe
。您可能会遇到error: cannot read property 'get' of undefined
。