javascript - Angular 4 - 选择用于枚举不起作用的选择

标签 javascript html angular typescript

我有以下枚举:

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' }
];

Demo Stackblitz

关于javascript - Angular 4 - 选择用于枚举不起作用的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234234/

相关文章:

php - onchange事件在使用jquery从另一个php页面添加的下拉菜单中不起作用

javascript - lodash 链式方法中的当前链

html - 从 googleusercontent.com 加载的图像上的 HTTP 403

html - 非等高元素的基础 6 block 网格

sass - Webpack url 和文件加载器不适用于 Angular 2 所需的组件样式

angular - NullInjectorError : No provider for Compiler

javascript - createSwitchNavigator-TypeError : Cannot call a class as a function

javascript - 如何在 JavaScript SPA WebApp 登录表单中实现 SAML 2.0 身份验证?

html - 输入 :text different positioning in different browsers

android - 添加 nativescript-ui-dataform 插件后 NativeScript tns 构建失败