无法使用表单组中的嵌套表单数组正确显示表单
Unable to display form corrrectly with nested form array in a form group
我有一个表单组 -> 表单组 -> 表单数组:
ngOnInit() {
this.form = this.fb.group({
dropDownOptions: this.fb.group({
items: this.fb.array([this.createItem()])
})
})
}
createItem() {
return this.fb.group({
name: ['Jon'],
surname: ['Doe']
})
}
在标记中我无法正确显示表格,因为我收到错误:
ERROR Error: Cannot find control with name: 'items' at _throwError (shared.ts:140)...
我以为我可以使用以下方法轻松获取数据:
get dropDownOptions(): FormArray {
return (this.form.controls['dropDownOptions'] as FormArray).controls['items']
}
然后在我的html中使用这个:
<form [formGroup]="form" (ngSubmit)="submit()">
<div formArrayName="items"
*ngFor="let item of dropDownOptions.controls; let i = index">
<div [formGroupName]="i">
<input formControlName='name'>
<input formControlName='surname'>
</div>
</div>
我似乎无法修复它或获得正确的组合来正确显示表单数组项!
有什么想法吗?
这是一个Stackblitz
由于您在另一个 formGroup 中创建了 formGroup,因此您需要使用 formGroupName 指令
试试这个:
<form [formGroup]="form" (ngSubmit)="submit()">
<ng-container formGroupName="dropDownOptions">
<div formArrayName="items"
*ngFor="let item of dropDownOptions.controls; let i = index">
<div [formGroupName]="i">
<input formControlName='name'>
<input formControlName='surname'>
</div>
</div>
</ng-container>
<button type="button" (click)="addNext()">Add Next</button>
<button type="submit">Submit (look at console)</button>
</form>
我有一个表单组 -> 表单组 -> 表单数组:
ngOnInit() {
this.form = this.fb.group({
dropDownOptions: this.fb.group({
items: this.fb.array([this.createItem()])
})
})
}
createItem() {
return this.fb.group({
name: ['Jon'],
surname: ['Doe']
})
}
在标记中我无法正确显示表格,因为我收到错误:
ERROR Error: Cannot find control with name: 'items' at _throwError (shared.ts:140)...
我以为我可以使用以下方法轻松获取数据:
get dropDownOptions(): FormArray {
return (this.form.controls['dropDownOptions'] as FormArray).controls['items']
}
然后在我的html中使用这个:
<form [formGroup]="form" (ngSubmit)="submit()">
<div formArrayName="items"
*ngFor="let item of dropDownOptions.controls; let i = index">
<div [formGroupName]="i">
<input formControlName='name'>
<input formControlName='surname'>
</div>
</div>
我似乎无法修复它或获得正确的组合来正确显示表单数组项!
有什么想法吗?
这是一个Stackblitz
由于您在另一个 formGroup 中创建了 formGroup,因此您需要使用 formGroupName 指令
试试这个:
<form [formGroup]="form" (ngSubmit)="submit()">
<ng-container formGroupName="dropDownOptions">
<div formArrayName="items"
*ngFor="let item of dropDownOptions.controls; let i = index">
<div [formGroupName]="i">
<input formControlName='name'>
<input formControlName='surname'>
</div>
</div>
</ng-container>
<button type="button" (click)="addNext()">Add Next</button>
<button type="submit">Submit (look at console)</button>
</form>