我在 Angular v6 中遇到了角度反应形式的奇怪问题。
我在 angular v1.2、v1.6 和 v1.7 中使用了表单数组。我最近将我的 CLI 升级到了最新版本的 Angular CLI v6.0.5。
相同的源代码在以前的版本中工作得很好,但在最新的 CLI 中却不行。
我收到的错误如下:
找不到“object”类型的不同支持对象“[object Object]”。NgFor 仅支持绑定到 Iterables,例如 Arrays。
对象本身如下所示:
createForm(): void {
this.mainForm = this.formBuilder.group({
itemRows: this.formBuilder.array([
this.initForm()
])
});
}
initForm(): FormGroup {
return this.formBuilder.group({
item1: ['', [Validators.required]]
// other form controls created here.
})
}
Angular 抱怨this.mainForm.controls.itemRows不能被迭代。但是,请注意this.mainForm.controls.itemRows是一个表单数组。
错误显示在视图中的这一行:
<form [formGroup]="mainForm">
<div formArrayName="itemRows"> <!-- Problem here in v6 -->
<div *ngFor="let itemRow of mainForm.controls.itemRows">
<!-- rest of the form -->
</div>
</div>
</form>
我发现建议 ( link1 ) ( link2 ) ( link3 ) 建议我从对象创建了一个数组,但它对我来说看起来并不干净,尤其是在处理像反应形式这样的复杂对象时。有人用最新的 CLI 遇到过这个问题吗?
另外,为什么要改变过去完美工作的东西?只是说。