我在不同的组件中有多种形式。我正在使用 formBuilder 为类型化表单创建 formGroups。当我通过 @Input 将创建的 formGroups 传递给子组件时,我没有看到传递的类型断言。有没有办法知道 formControl 的类型。
父组件:
public form1 = this.formBuilder.group({
name: ["", Vaidators.required]
enabled: [false, aidators.required]
});
public form2= this.formBuilder.group({
date: ["", Vaidators.required]
});
public form3 = this.formBuilder.group({
data: ["", Vaidators.required],
recurring: [true, Vaidators.required]
});
public form = this.formBuilder.group({
form1: this.form1,
form2: this.form2,
form3: this.form3,
});
<child1 [form1]="form1"></child1>
<child2 [form2]="form2"></child2>
<child3 [form3]="form3"></child3>
子组件:
@Input()
form1: FormGroup;
<form [formGroup]="from1">
<input type="text" formControlName="name" />
</form>
我知道我可以为每个 formGroup 创建一个 Interface 并在子组件中使用它。但是,我想知道是否还有其他方法可以做到这一点。
interface form1 {
name: FormControl<string>;
}
form: FormGroup<form1> = new FormGroup({
name: new FormControl("")
})
目前,除了为每个
FormGroup
创建接口之外,没有其他方法可以在 Angular 中强制执行类型断言。这意味着将您的输入声明为 FormGroup
类型会使其默认为 FormGroup<any>
类型 - 这就是您的 IDE/编译器无法推断您传递的表单类型的原因。