首先,我已经阅读了很多关于嵌套表单的 stackoverflow 的答案,但我无法解决这些问题,感谢您的宝贵时间。
我正在尝试制作一个表单来编辑用户信息,我使用的信息是这样的:
(2) [Object, Object]
0: Object
mail: "example1@exp.exp"
1: Object
mail: "example2@exp.exp"
在我的组件中,我创建了一个嵌套表单:
// blablabla.component.ts
// imports, component, ...
export class EditMailsComponent implements OnInit {
@Input() data: Array<any>;
private form: FormGroup;
constructor(
private formBuilder: FormBuilder
)
ngOnInit(){
this.form = this.formBuilder.group({
mails: this.formBuilder.array([]),
});
this.fnOpen();
}
private fnOpen()
{
// ...
const control = <FormArray>this.form.controls['mails'];
this.data.forEach(x => {
control.push(this.populateForm(x);
});
// ...
}
private populateForm(x: Array<any>)
{
return this.formBuilder.group({
mail: [x.mail]
});
}
}
我的 html 文件如下所示:
<!-- ... -->
<form class='smart-form' novalidate>
<div class='modal-body'>
<div [formGroup]='form'>
<div formArrayName='mails'>
<div *ngFor='let mail of form.controls.mails.controls; let i=index'>
<div [formGroupName]="i">
<fieldset>
<section class='col-col-6'>
<label class='input' id='mail'>
<input type='text' formControlName='mail' ngModel>
</label>
</section>
</fieldset>
<!-- ... -->
当我尝试打开要编辑的页面时,会创建正确数量的嵌套表单(例如:如果我有 4 个对象数组,则打开 4 个表单)但“邮件”未显示在 .
有人能告诉我我在哪里失踪吗?
如果您需要更多信息,我很乐意提供帮助。
更新:
之前去过的地方问:
- STACKOVERFLOW - Angular 2 Form“找不到带有路径的控件”</a>
- STACKOVERFLOW - Angular 2 表单“找不到控制”</a>
- STACKOVERFLOW -找不到带有路径的控件:angular2
- STACKOVERFLOW - Angular 2 使用 FormBuilder 访问嵌套的 FormArrays
教程(我试图用它们来查找我的代码中的错误):