选择列表设置选定项目角度2 ngModel

JDO*_*DOE 5 angular2-forms angular2-ngmodel angular

这是我目前的代码:

<select name="role" [(ngModel)]="user.role">
    <option *ngFor="let role of roles" [ngValue]="role" [attr.selected]="role == user.role ? 'true' : 'false'">{{role.name}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我正在加载数组中的所有角色,并且用户类具有Role属性(不会像user.role = roles[0]后端数据一样加载).

问题是所选属性不起作用,而我的选择不会转到正确的角色.我究竟做错了什么?

Gün*_*uer 6

只需删除

[attr.selected]="role == user.role ? 'true' : 'false'"
Run Code Online (Sandbox Code Playgroud)

和分配选定角色user.role,并ngModel会使匹配项的选择之一.

如果role是对象,则分配的实例必须相同.

另请参阅自4.0.0-beta.7以来最近添加的自定义比较https://github.com/angular/angular/issues/13268

<select [compareWith]="compareFn" ...
Run Code Online (Sandbox Code Playgroud)
compareFn(val1, val2): boolean {
  return val1 && val2 ? val1.id === val2.id : val1 === val2;
}
Run Code Online (Sandbox Code Playgroud)