Javascript Anuglar 4-选择用于选择,枚举不起作用

Javascript Anuglar 4-选择用于选择,枚举不起作用,javascript,html,angular,typescript,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'},

我有以下枚举:

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>

{{category.label}
我指的
类别是映射


但是,默认情况下不选择任何值。我知道ngModel和ngValue类型必须是相同的,但是enum隐式地是一个整数,所以我认为它可以工作。对于匹配的类别,所选表达式的结果也为true,但默认情况下它仍然未被选中。

默认情况下,当您尝试使用
enum
值时,它们返回其当前索引。我认为您假设得到为enum编写的
string

您必须稍微调整一个
enum
,而不是使用像
Category.SYSTEM
这样的枚举值来获取
Category[Category.SYSTEM]
,这将返回一个
字符串

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