Angular 在何处初始化被动表单中的表单组?
在严格模式下使用Angular 11和Typescript 4,我有:Angular 在何处初始化被动表单中的表单组?,angular,typescript,angular-reactive-forms,angular11,Angular,Typescript,Angular Reactive Forms,Angular11,在严格模式下使用Angular 11和Typescript 4,我有: export class ContactComponent implements OnInit { form: FormGroup; constructor(private formBuilder: FormBuilder) { } ngOnInit() { this.form = this.formBuilder.group({ email: ['', [Validators.r
export class ContactComponent implements OnInit {
form: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.form = this.formBuilder.group({
email: ['', [Validators.required, Validators.email]],
name: ['', [Validators.required, Validators.maxLength(40)]],
});
}
我得到生成错误:
Property 'form' has no initialiser and is not definitely assigned in the constructor.
FormGroup不应该在ngOnInit上草签吗
FormGroup不应该在ngOnInit上草签吗
不一定是这样;我发现直接在类上初始化大多数内容最简单,如下所示:
export class ContactComponent implements OnInit {
form = this.formBuilder.group({
email: ['', [Validators.required, Validators.email]],
name: ['', [Validators.required, Validators.maxLength(40)]],
});
constructor(private formBuilder: FormBuilder) { }
}
这对我来说很好
初始化需要来自DOM的数据(@Input
、@ViewChild
等)时会出现例外情况,因为这些东西会按照以下所述在不同的方式初始化:
→ <代码>恩戈尼特@Input()
→ <代码>ngAfterViewInit@ViewChild()
→ <代码>ngAfterContentInit@ContentChildren()
@Input()
的内容将在相应的生命周期挂钩ngOnInit
中完成,但是,这并不能满足严格的规则,因此代码>是必需的
export class ContactComponent implements OnInit {
@Input() input!: number;
inputDoubled!: number;
form = this.formBuilder.group({
email: ['', [Validators.required, Validators.email]],
name: ['', [Validators.required, Validators.maxLength(40)]],
});
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.inputDoubled = this.input * 2;
}
}
在严格模式下,构造函数是我们最初设置属性的地方。我们在ngoninit中移动其余的初始化逻辑。我的首选通常是在声明属性form:FormGroup=this.formBuilder.group({…})时初始化表单代码>