用作输入时,FormGroup 不会发生 Angular 类型断言

问题描述 投票:0回答:1

我在不同的组件中有多种形式。我正在使用 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("")
})

angular angular-reactive-forms angular-formbuilder
1个回答
0
投票

目前,除了为每个

FormGroup
创建接口之外,没有其他方法可以在 Angular 中强制执行类型断言。这意味着将您的输入声明为
FormGroup
类型会使其默认为
FormGroup<any>
类型 - 这就是您的 IDE/编译器无法推断您传递的表单类型的原因。

© www.soinside.com 2019 - 2024. All rights reserved.