【发布时间】:2018-12-31 13:54:24
【问题描述】:
所以,我正在使用 Angular 5,并且我有两个数组,其中包含从数据库中提取的数据:
["Reports", "UI"]
和
0: {ranges: "Low", ph: 0, days: 0}
1: {ranges: "Mediu,", ph: 0, days: 0}
2: {ranges: "High", ph: 0, days: 0}
我正在为第一个数组中的每个元素显示第二个数组。之后我有一个输入,并像我对第二个数组一样重复它
...
<tbody *ngFor="let i of paramsData; let y = index"> <---Repeat the data from first array
<ng-container *ngFor="let data of times; let x = index"> <---Repeat the data from second array in each element in the first array
<tr>
<td [attr.rowspan]="times.length" *ngIf="x == 0">{{i}}</td>
<td>{{data.ranges}}</td>
<td>
<input type="number" class="form-control" name='weight'>
</td>
<td>{{data.ph}}</td>
<td>{{data.days}}</td>
</tr>
</ng-container>
</tbody>
...
问题:如何获得由*ngFor 自动生成的输入中引入的值?我无法在 formControlName 中分配值,因为所有输入都将具有相同的名称,并且只会保存一个值。
另外,我不能使用[(ngModel)]="someArray[x]" 将值存储在数组中,因为它只会将第一次迭代的值保存在第二次ngFor 上。
我失去了什么吗?有没有办法做到这一点?
-- 编辑--
StackBlitz 链接:https://stackblitz.com/edit/angular-ux4cqv
表格截图
【问题讨论】:
-
如果您在 stackblitz.com 中添加您的代码,它会很容易为您提供帮助!
-
你考虑过formArrayName吗? angular.io/api/forms/FormArrayName
-
@Chellappan 这是堆栈闪电战:stackblitz.com/edit/angular-ux4cqv
-
@pixelbits 还没有。我该怎么做呢?
-
您可以转换数据以匹配您想要显示的stackblitz。
model = this.params.map(param => ({param: param, times: this.ranges.map(time => Object.assign({}, time))}))并绑定输入。