我知道有人问过类似的问题,但我没有找到一个好的答案。我想在 Angular 表单中创建一个选择列表,其中每个选项的值都是一个对象。另外,我不想使用 2 路数据绑定。例如,如果我的组件有这些字段:
l 用户:任何[] = [
{ 姓名:“比利·威廉姆斯”,性别:“男性”},
{ 姓名:“Sally Ride”,性别:“女性”}
];
curUser:任何;
我希望我的 HTML 模板包含以下内容:
<select #selectElem (change)="setNewUser(selectElem.value)">
<option *ngFor="让 lUsers 的用户" [ngValue]="user">
{{用户名}}
</选项>
</选择>
但是,使用此代码,我的 setNewUser() 函数会接收所选用户的 Name 字段的内容。为什么它选择那个特定的领域,我不知道。我期望它会收到所选选项的“值”,我专门将其设置为用户对象。
请注意,我在选项中使用了 ngValue 而不是 value。这是其他人对 SO 的建议。如果我改用 value,会发生什么情况是对象被转换为字符串 '[Object object]',这是 setNewUser() 接收的,这是没用的。
仅供参考,我正在使用 angular 4.0.0 和 @angular/cli 1.1.2 在 Windows 10 上工作。这是 setNewUser() 方法:
setNewUser(用户:用户):无效{
控制台.log(用户);
this.curUser = 用户;
} // setNewUser()
我正在确定我的日志记录以及在模板中包含的确切传递给它的内容:<pre>{{curUser}}</pre>