FormArray.找不到路径为的控件



我想要输出一个表单,其中一个字段是数组,并且对于数组的每个元素,我需要输出我的输入。

组件:

ngOnInit() {
const fb = this.fb;
this.editForm = this.fb.group({
country: fb.control(null),
identifiers: this.fb.array([
this.fb.group({
codeIdentifier: fb.control(null),
numIdentifier: fb.control(null),
})
]),
});
this.organizationService.getOneById(this.id).subscribe((organization: Organization) => {
let ids: any[] = [];
organization.identifiers.forEach(item => {
let id: any = { "codeIdentifier": "", "numIdentifier": "" };
id.codeIdentifier = item.typeIdentifier.code;
id.numIdentifier = item.numIdentifier;
ids.push(id);
});
this.editForm.setControl('identifiers', this.fb.array(ids || []));
})
}

HTML:

<div [formGroup]="editForm">
<ng-container formArrayName="identifiers">
<ng-container *ngFor="let identifier of identifiers.controls; let i=index" [formGroupName]="i">
<input type="text" formControlName="codeIdentifier">
<input type="text" formControlName="numIdentifier">
</ng-container>
</ng-container>
</div>

收到错误:

找不到路径为"identifier->0->codeIdentifier"的控件

在构建array时,请注意将其设置为group,如下所示:

this.editForm.setControl('identifiers',
this.fb.array(ids.map(
id => this.fb.group({codeIdentifier: id})
) || [])
);
this.editForm.setControl('identifiers',
this.fb.array(ids.map(
id => this.fb.group({numIdentifier: id})
) || [])
);
  • 我不完全理解您的Objects结构,但这是将Control Array构建回视图以进行编辑/更新的方法

标识符在您的代码中什么都不是(好吧,是formArray属性的名称(

您可以选择

1.-在你的.ts 中放一个吸气剂

get identifiers()
{
return this.editForm.get('identifiers") as FormArray
}

2.-更改你的.html

<ng-container *ngFor="let identifier of editForm.get('identifiers").controls;
let i=index" [formGroupName]="i">

最新更新