我知道類似的問題已經被問到,但我沒有找到一個好答案。我想創建一個角度形式的選擇列表,其中每個選項的值是一個對象。另外,我不想使用2種方式的數據綁定。例如如果我的組件有這些領域:Angular 4 - 在選擇列表中使用選項值對象
lUsers: any[] = [ { Name: 'Billy Williams', Gender: 'male' }, { Name: 'Sally Ride', Gender: 'female'} ]; curUser: any;
我想我的HTML模板包含此:
<select #selectElem (change)="setNewUser(selectElem.value)"> <option *ngFor="let user of lUsers" [ngValue]="user"> {{user.Name}} </option> </select>
有了這個代碼,但是,我的setNewUser()函數接收所選擇的用戶名的內容領域。爲什麼選擇這個特定的領域,我不知道。我期望的是,它會收到所選選項的「值」,我特別將其設置爲用戶對象。
請注意,我在選項中使用了ngValue而不是value。這是由SO的其他人的建議。如果我使用value來代替,那麼會發生的是對象被轉換爲字符串'[Object object]',這是setNewUser()所接收的,這是無用的。
僅供參考,我正在使用角度4.0.0與@ angular/cli 1.1.2在Windows 10上工作。這裏是setNewUser()方法:
setNewUser(user: User): void { console.log(user); this.curUser = user; } // setNewUser()
我準確地確定被傳遞正是它我的兩個記錄它,而且還包括這個模板上:<pre>{{curUser}}</pre>
OP的代碼和您的代碼都不處理value屬性。我不確定爲什麼在你的答案中提到它。此外,該OP嘗試使用ngValue,所以這將是有益的補充解釋他們爲什麼要綁定到value屬性,而不是(它是更好?是否正確?...的OP使用) – zeroflagL