我有一个用户列表。每个用户都是一个复合对象:{ id: '123', name: 'Bob', State: 'Colorado' }
我使用 *ngFor 呈现这些用户:
<div *ngFor="let u in users">
{{ u.name }}
<select [(ngModel)]="u.state">
<option *ngFor="let s in states" [value]="s">{{s}}</option>
</select>
</div>
当 select-value 改变时 - 我想通过 REST API 保存对象。
我尝试添加 (change)="changeState(u)"
,但这不起作用,显然 u.state
在我的 ( change)
回调被执行。
如果我没有循环,我会给我的下拉菜单一个引用:#state
然后使用 (change)="changeState(u, state.value)"
我唯一的选择是使用 $event.target.value
吗?还是有更巧妙的方法来做到这一点?该解决方案还取消了验证。
前两个解决方案尝试中的任何一个都可以挽救吗?
最佳答案
您可以将 ngModelChange
事件与 ngModel
分开:
<select [ngModel]="u.state" (ngModelChange)="changeState($event)">
<option *ngFor="let s in states" [value]="s">{{s}}</option>
</select>
然后新的选择值将直接传递给changeState()
。
https://stackoverflow.com/questions/40535837/