Angular:使用 FormArray 在对象数组上嵌套 ngFor

Angular: Nested ngFor on array of objects with FormArray

我对嵌套的 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};

之后,我将它传递给服务,然后传递给主组件,因此 designInputs 例如应该看起来像这样:

[
{0:"input1Value",
 1:"input2Value"
},
{0:"input1Value",
 1:"input2Value",
 2:"input3Value"
}
]

所以我无法预先初始化它,因为目前我不知道每个对象将包含多少项。

这里有什么问题以及如何解决?

如果您在编辑中所说的是这种情况,那么您的 HTML 应该看起来像这样:

<div *ngFor="let form of designInputs">
   <h5 class="card-title" *ngFor="let input of form" >{{input}}</h5>
</div>

它可能不起作用,我的假设是因为数组只是键为数字的对象,所以它仍然应该迭代。但是,如果迭代不起作用,请像这样尝试:

<div *ngFor="let form of designInputs">
   <h5 class="card-title" *ngFor="let input of Object.values(form)" >{{input}}</h5>
</div>

编辑

根据您的解决方案:

<div *ngFor="let form of designInputs">
   <h5 class="card-title" *ngFor="let input of form | keyvalues" >{{input.value}}</h5>
</div>

我找到了我正在寻找的解决方案,使用名为“|keyvalue”的内置管道

<div *ngFor="let form of designInputs;let d = index">
    <h5 class="card-title" *ngFor="let input of form | keyvalue">{{input.value}}</h5>
</div>