我有以下表格:
const enum Fields {
FirstName = 'firstName',
LastName = 'lastName'
}
interface FormType {
[Fields.FirstName]: FormControl<string | null>;
[Fields.LastName]: FormControl<string | null>;
}
public form!: FormGroup<FormType>;
this.form = new FormGroup({
[Fields.FirstName]: new FormControl(null, { validators: Validators.required }),
[Fields.LastName]: new FormControl(null, { validators: Validators.required }),
});
使用enum
是我为避免输入错误而养成的习惯.
当我执行this.form.getRawValue().firstName
时,firstName
的类型被正确定义为string | null
.然而,我更喜欢使用FormBuilder
来构建我的表单,但我找不到一种方法来使用FormBuilder
来翻译上面的表单.我试过这个:
this.form = this._fb.group<FormType>({
[Fields.FirstName]: ['', Validators.required],
[Fields.LastName]: ['', Validators.required],
});
我当然可以使用一个没有任何类型的简单FormGroup
,但它会 destruct 目的:p
但是,这甚至不能作为string | Validators
的推断类型.我try 了不同的事情,但没有成功.
是否可以将FormBuilder用于强类型表单?