angular - Angular 6 select:设置初始值
问题描述
我有以下代码
<select name="role" [(ngModel)]="user.role">
<option *ngFor="let r of roles" [ngValue]="r">{{r.name}}</option>
</select>
其中角色是一个对象:
[{"id":1, "name":"user"}, {"id": 2, "name":"admin"}]
和 user.role 是例如:
{"id":1, "name":"user"}
我希望初始值为 user.role,我尝试了很多类似 ngInit 的方法,但没有完成工作。
解决方案
您可以尝试使用此解决方案。
使用 [compareWith]="compareObjects" 在选择中使用对象
组件.html
<select name="role" [compareWith]="compareObjects" [(ngModel)]="user.role">
<option *ngFor="let r of roles" [ngValue]="r">{{r.name}}</option>
</select>
组件.ts
user = {
role: { "id": 1, "name": "user" }
}
roles = [
{ "id": 1, "name": "user" },
{ "id": 2, "name": "admin" }
]
compareObjects(o1: any, o2: any): boolean {
return o1.id === o2.id && o1.name === o2.name;
}
推荐阅读
- ruby-on-rails - 图像未在 Database Rails 5 中上传 | 回形针
- c# - Rider 中最流行的 C# 代码样式设置是什么?
- jquery - 使用 jQuery 扩展菜单
- python - 从多个数据框创建单个箱线图
- r - 如何在 R 中获得更好的性能:一个大文件还是几个小文件?
- android - 缺少可访问性标签:在 Android Studio 警告中
- sql - 根据整数长度查询值
- php - 如何阻止除超级管理员以外的所有用户的网址
- java - 如何获取 jdbc 的输出或错误流
- .net - 在解决方案级别管理 Microsoft 和 StyleCop 代码分析规则