typescript Angular:类型AbstractControl< any>不能赋值给类型FormControl

lhcgjxsq  于 2023-06-30  发布在  TypeScript
关注(0)|答案(2)|浏览(152)

我有一个带有input标记的子组件

<input [formControl]="control">
  • component.ts* 文件
@Input() control: FormControl;

并在父级中将其用作

<app-input [control]="f['email']"></app-input>
                      ~~~~~~~~~~
  • component.ts* 文件
public form: FormGroup;

constructor(
    private fb: FormBuilder,
  ) {
    this.form = this.fb.group({
      email: ['', [
        Validators.email,
        Validators.required
      ]],
    });
}

get f() {
    return this.form.controls;
}

但是它在HTML control赋值中给出了一个错误。

Type AbstractControl<any> is not assignable to type FormControl
wz3gfoph

wz3gfoph1#

get f() {
  return this.form.controls as {[key: string]: FormControl } ;
}

由于窗体组和数组可以包含组、数组或控件,因此它们返回抽象控件。您必须明确声明它们是控件。

isr3a4wc

isr3a4wc2#

您可以执行以下操作:

public form: FormGroup = this.fb.group({
  email: ['', [
    Validators.email,
    Validators.required
  ]],
});

constructor(private fb: FormBuilder) 
{}`

然后在父html中:<app-input [control]="form.controls.email"></app-input>
这样,表单控件值在开发过程中就可以作为类型使用

相关问题