首页 > 解决方案 > Angular 6 form builder array error

问题描述

ERROR Error: Cannot find control with path: 'partners -> 0 -> partner'

Can't seem to get this form builder array to compile. I practically worked off of the example provided here. Been looking at this for way too long, any help appreciated. I feel/hope it's something small I've over looked.

constructor() {
  this.createForm();
}

createForm() {
  this.form = this.fb.group({
    firstName: ['', Validators.required],
    lastName: ['', Validators.required],
    partners: this.fb.array([])
  });
}

get partners(): FormArray {
  return this.form.get('partners') as FormArray;
}


addPartner() {
  this.partners.push(this.fb.group(new Partner()));
}

 export class Partner {
  partner: '';
  segment: '';
  market: '';
  supervisor: '';
}
<form [formGroup]="form" (ngSubmit)="onSubmit()">
    <div formArrayName="partners" *ngIf="partners.length">
        <div
            *ngFor="let partner of form.controls.partners.controls; let i=index"
            [formGroupName]="i">
        </div>
        <button type="button" (click)="addPartner()">&#43; Add Partner</button>
    </div>
</form>

标签: angular

解决方案


我相信错误来自这一行:

<div formArrayName="partners" *ngIf="partners.length">

我建议然后替换为:

<ng-container *ngIf="partners.length">
   <div formArrayName="partners" >
      ...
   </div>
<ng-container>

推荐阅读