示されているようにその他の回答Angular2 アプリケーションの初期ルーチンは ngOnInit() メソッドで起動し、依存性注入専用のコンストラクターを残す必要があります。
しかし、リアクティブフォームチュートリアル私が従っているように、フォームの初期化はコンストラクタ内にあります:
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"
});
}
}
本当に大きな違いがあるのでしょうか、それとも単なる小さな問題なのでしょうか?
ベストアンサー1
を初期化することformGroup
はngOnInit()
悪い習慣ではありません。フォームをコンポーネントに (直接的または間接的に) 依存する値で初期化したい場合には実際に必要になるからです@Input()
。
例えば:
class SignInFormComponent {
@Input() currentLogin: string;
formGroup: FormGroup;
constructor(private fb: FormBuilder) {
// this.currentLogin is not known yet here
}
ngOnInit(): void {
this.formGroup = this.fb.group({
loginEmail: [this.currentLogin, Validators.email],
loginPassword: [''],
});
}
}