2016-11-10 34 views
0

我有一個用戶列表。每個用戶都是一個複合對象:{ 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> 

當選擇價值的變化 - 我要救了REST API的對象。

我試着加入(change)="changeState(u)",但那不起作用,顯然u.state在我的(change)回調被執行後正在更新。

如果我不會有一個循環,我想給我的下拉列表中選擇參考:#state然後用(change)="changeState(u, state.value)"

是我唯一的選擇就是使用$event.target.value?或者有沒有一種簡單的方法來做到這一點?該解決方案還會取消驗證。

前兩種解決方案中的任何一種都可以挽救?

+0

你保存之前的狀態還是之後的狀態? (新值或舊值)。 – silentsod

+0

使用ngModel你不能這樣做,它只有雙向綁定。 –

回答

1

您可以從ngModelngModelChange事件分開:

<select [ngModel]="u.state" (ngModelChange)="changeState($event)"> 
     <option *ngFor="let s in states" [value]="s">{{s}}</option> 
</select> 

那麼新的選擇值將被傳遞給changeState()直接。

相關問題