javascript - Angular 4 - 选择用于枚举不工作的选择
问题描述
我有以下枚举:
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 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>
categories
我指的是映射。
但是,默认情况下未选择任何值。我知道 ngModel 和 ngValue 类型必须相同,但枚举隐含地是一个整数,所以我认为它有效。对于匹配的类别,所选表达式也为 true,但默认情况下仍未选中。
解决方案
默认情况下,当您尝试使用enum
value 时,它们会返回其当前索引。我认为您假设获得string
为枚举编写的价值。
您必须进行一些调整enum
,而不是像使用 enum 值那样Category.SYSTEM
返回Category[Category.SYSTEM]
a 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 - 即使在 res.send 之后,代码也会被执行
- java - 将二维数组拆分为多个部分
- azure-devops - 修复 RunUAT.bat
- django - Django 和 PosgresSQL 在每次保存时添加一个时区偏移量
- python - 在 Pandas 中合并两个数据框将在合并结果中创建所有两个数据框列
- github - 限制 Github 组织分叉
- ios - 使用索引访问数组元素时出现错误“在展开可选值时意外发现 nil”
- php - 如果值为空 ("") 或 (null),则从嵌套/多维数组中删除键
- python - 从 keras.engine 导入 InputSpec 停止工作
- nuxtjs - 如何停止输入类型数字字段的nuxtjs轮/滚动事件?