As indicated in other responses, the initial routines of an Angular2 application should be launched in the ngOnInit() method, leaving the constructor specifically for dependency injection.
However, in the Reactive Forms tutorial that I'm following, the initialization of the form is in the constructor:
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"
});
}
}
Is there really a significant difference or is it just a minor issue?
Initializing the formGroup
in ngOnInit()
is not a bad practice, as it will actually be required if you want your form to be initialized with values that depend (directly or indirectly) from your component @Input()
s.
For instance:
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: [''],
});
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With