【发布时间】:2021-03-28 18:06:33
【问题描述】:
我对嵌套的 ngFor 有问题,也许我用错了,
在 Home 组件中,我有一个空的对象数组 designInputs:{}[] = [];
我通过在另一个组件中使用 Reactive-form 来填充它,每个表单都作为一个对象存储在这个数组中,表单是使用 FormArray 构建的,所以它不是固定大小的表单,然后每个对象都有它自己的长度。
在 home 组件中,我正在循环遍历该对象数组 designInputs
<div *ngFor="let form of designInputs;let i = index"> //number of forms
<h5 class="card-title" *ngFor="let input of form ;let j =index" > {{input [i]}}</h5> //number of inputs in each form
</div>
第一个循环应该负责多少个对象(表单填充),所以要获取整个表单对象 第二个循环是获取每个表单保存的输入值[每个表单(对象)有不同数量的输入。
编辑: 在另一个组件中,我在名为“designForm”的表单中有名为“newFiles”的 formArray,然后将其转换为我这样做的对象:
let inputsValues = {...this.designForm.get('newFiles').value};
之后,我将它传递给一个服务,然后传递给 home 组件,因此例如 designInputs 应该看起来像这样:
[
{0:"input1Value",
1:"input2Value"
},
{0:"input1Value",
1:"input2Value",
2:"input3Value"
}
]
所以我之前无法初始化它,因为目前我不知道每个对象将包含多少项。
这里出了什么问题以及如何解决?
【问题讨论】:
-
认为您可以在使用 FormBuilder 参考的地方添加初始化代码。盲目虽然 id 说尝试这样做,但如果您说数组中的每个对象都是一个表单数组,那么您需要获取控件,因此将
<h5>循环中的input更改为input['controls'] -
嘿,谢谢你的帮助,我试过了,实际上它给了我一个空的 div,我编辑了帖子以回复第一个注释,你可以检查一下吗。@AshwynHorton
标签: angular nested-loops angular-reactive-forms ngfor formarray