【发布时间】:2020-06-18 13:23:12
【问题描述】:
我正在使用*ngFor 生成动态mat-inputs。我想使用*ngFor 元素的索引将每个[(ngModel)] 值存储在不同的数组中(不是*ngFor 一个)。这就是我正在做的事情:
<div *ngFor="let item of items;let id = index;">
<mat-form-field >
<mat-select [(ngModel)]="differentArray[id].first" (ngModelChange)="onSelection()">
<mat-option *ngFor="let number of arrayOfNumbers" [value]="number">{{number}}</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<mat-select [(ngModel)]="differentArray[id].second" (ngModelChange)="onSelection()">
<mat-option *ngFor="let number of arrayOfNumbers" [value]="number" >{{number}}</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field >
<mat-select [(ngModel)]="differentArray[id].third" (ngModelChange)="onSelection()">
<mat-option *ngFor="let number of arrayOfNumbers" [value]="number">{{number}}</mat-option>
</mat-select>
</mat-form-field>
</div>
但所有不同*ngFor 的值都变得相同。为什么会这样?我怎样才能正确地使用每个元素 id 做到这一点?
【问题讨论】:
-
您对所有选择输入使用相同的 onSelection() 方法。也许这个方法有什么东西?
-
没有。他们什么都没有发生。到现在为止只是 console.log。
-
你能分享一个例子来说明
But the values for all different *ngFor are getting same的含义吗?看起来你 *ngFor 在同一个数组上 3 次。 -
您使用
differentArray的方式很奇特。你能分享一下你是怎么定义它的吗? -
我有一个
items数组,对于每个item,我必须取这三个下拉值。然后,我必须根据items中item的索引将这三个值保存在不同的数组中。所以基本上,我必须将ngfor中的所有项目保存为differentArray=[{first:"selected value from dropdown",second:"selected value from ddropdown",third:"selected value from dropdown"},{},{},{}]。但是 differentArray 的每个对象都得到相同的值。
标签: angular typescript forms ngfor