Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角反应形式:未命名的FormArray内部FormArray_Angular_Angular Reactive Forms_Formarray - Fatal编程技术网

Angular 角反应形式:未命名的FormArray内部FormArray

Angular 角反应形式:未命名的FormArray内部FormArray,angular,angular-reactive-forms,formarray,Angular,Angular Reactive Forms,Formarray,我不知道如何为我的数据类型显示一个合适的输入表(或者我构造FromGroup的方式是否有效),所以我这里是我的组件 export class FoiFormComponent { listForm = new FormGroup({ fois: new FormArray([ new FormArray([ new FormControl('01-01-2021'), new FormControl('101'), n

我不知道如何为我的数据类型显示一个合适的输入表(或者我构造FromGroup的方式是否有效),所以我这里是我的组件

export class FoiFormComponent {

  listForm = new FormGroup({

    fois: new FormArray([

      new FormArray([
        new FormControl('01-01-2021'),
        new FormControl('101'),
        new FormControl('201')]),

      new FormArray([
        new FormControl('02-01-2021'),
        new FormControl('102'),
        new FormControl('202')])

    ])
  });

  constructor() {}

  getFois(): FormArray[] {
    return (this.listForm.get('fois') as FormArray).controls as FormArray[];
  }

}
我想要的结果应该是

我试着这么做

  <table>
    <tr *ngFor="let foiArr of getFois; index as i" [formGroupName]="i">
      <td *ngFor="let row of foiArr.controls[i].controls; index as j">
        <input formControlName="j">
      </td>
    </tr>
  </table>

但我得到的错误是“NgFor只支持绑定到数组之类的可重用文件。”(即使它是数组,在代码中我也可以这样做
console.log(this.getFois()[0]);


注意:因此表在列和行中都是动态的,这就是为什么我没有每个数组或FormGroup的名称。非常感谢任何帮助或提示。

如果有人感兴趣,我可以使用索引作为FormArrayName:

<form [formGroup]="fois">

  <table>
    <ng-container *ngFor="let control of getFoiControls(); let i = index">
      <tr [formArrayName]="i">
        <td *ngFor="let row of getDay('' + i).controls; let j = index">
          <input [formControlName]="j">
        </td>
      </tr>
    </ng-container>

  </table>

</form>
fois = new FormGroup({});

  constructor() {}

  getDay(day: string): FormArray {
    return this.fois.get(day) as FormArray;
  }

  getFoiControls(): string[]{
    return Object.keys(this.fois.controls);
  }

  ngOnInit(): void {

    this.fois.addControl('0', new FormArray([
      new FormControl('01-01-2021'),
      new FormControl('101'),
      new FormControl('201')
    ]));
    this.fois.addControl('1', new FormArray([
      new FormControl('02-01-2021'),
      new FormControl('102'),
      new FormControl('202')
    ]));
    this.fois.addControl('2', new FormArray([
      new FormControl('02-01-2021'),
      new FormControl('103'),
      new FormControl('203')
    ]));

  }