AbstractControl 类型不可分配给 FormGroup 类型

Ant*_*ony 14 angular angular-reactive-forms

我有一个充满实例的FormGroup控件FormArrayFormGroup

  someForm = this.fb.group({
    days: this.fb.array([
      this.fb.group({
        description: ['']
      })
    ])
  })
Run Code Online (Sandbox Code Playgroud)

另外,我有一个用于该数组的吸气剂

  get days(): FormArray {
    return this.someForm.get('days') as FormArray;
  }
Run Code Online (Sandbox Code Playgroud)

当我尝试迭代FormArray并将其分配给[formGroup]指令时,如本文所示

 <div *ngFor="let day of days.controls">
  <ng-container [formGroup]="day">
    ...
Run Code Online (Sandbox Code Playgroud)

我越来越

error TS2740: Type 'AbstractControl' is missing the following properties from type 'FormGroup': controls, registerControl, addControl, removeControl, and 3 more.
Run Code Online (Sandbox Code Playgroud)

小智 12

另一种解决方法是在组件中使用铸造。

模板:

<ng-container [formGroup]="getFormGroup(day)">
Run Code Online (Sandbox Code Playgroud)

成分:

getFormGroup(control: AbstractControl) { return control as FormGroup; }
 
Run Code Online (Sandbox Code Playgroud)

这样我们仍然可以利用该控件作为 ngFor for formArray 中循环组件的输入值

<ng-container *ngFor="let day of days.controls">
    <childComponent [formGroup]="day"></childComponent>
</ng-container>
Run Code Online (Sandbox Code Playgroud)


Ant*_*ony 4

我在这篇文章FormGroups中找到了一种解决方法,可以通过以下方式进行迭代index

 <div *ngFor="let day of days.controls; let i=index">
      <ng-container [formGroupName]="i">
         ...

Run Code Online (Sandbox Code Playgroud)