我有以下枚举:
export enum Category {
SYSTEM = 0,
NAVIGATION = 1,
MESSAGING = 2,
MEDIA = 3
}
以及通过以下方式映射到标签:
export const CategoryMapping = [
{ value: Category.SYSTEM, label: 'System' },
{ value: Category.NAVIGATION, label: 'Navigation'},
{ value: Category.MESSAGING, label: 'Messaging'},
{ value: Category.MEDIA, label: 'Media'}
];
我还有一个以类别作为其字段的对象。
我的目标是在select中显示类别,将其绑定(bind)到对象的类别字段并在显示时默认显示当前值:
<select class="form-control" id="category" [(ngModel)]="myObj.category">
<option
*ngFor="let category of categories"
[ngValue]="category.value"
[selected]="category.value == myObj.category">
{{ category.label }}
</option>
</select>
我指的类别
是映射。
但是,默认情况下不选择任何值。我知道 ngModel 和 ngValue 类型必须相同,但枚举隐式是一个整数,所以我认为它可以工作。对于匹配类别,所选表达式的结果也为真,但默认情况下仍未选中。
最佳答案
默认情况下,当您尝试使用 enum
值时,它们会返回当前索引。我认为您假设获得了为枚举编写的 string
值。
你必须稍微调整一下 enum
,比如不要使用像 Category.SYSTEM
这样的枚举值到 Category[Category.SYSTEM]
这将返回一个 string
。
export const [
{ value: Category[Category.SYSTEM], label: 'System' },
{ value: Category[Category.NAVIGATION], label: 'Navigation' },
{ value: Category[Category.MESSAGING], label: 'Messaging' },
{ value: Category[Category.MEDIA], label: 'Media' }
];
关于javascript - Angular 4 - 选择用于枚举不起作用的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234234/