Angular5:使用*ngFor迭代枚举

Fra*_*ank 3 enums typescript ngfor angular

我正在尝试创建一种具有键值对的结构,其中键是'equals'之类的标识符,值是类似于'\ u003D'的unicode等效html.现在我正在使用枚举,但我不确定这是否是最好的结构.无论如何,我需要使用这个枚举(或其他结构)在页面的下拉列表中显示unicode字符,方法是使用ngFor语句迭代我的枚举并创建innerHtml与unicode字符对应的选项.做这个的最好方式是什么?

现在我的代码如下:

枚举

export enum Symbols {
  equals = '\u003D'
}
Run Code Online (Sandbox Code Playgroud)

component.ts

symbols: Symbols;
Run Code Online (Sandbox Code Playgroud)

component.html

<select *ngFor="let symbol of symbols">
     <option value="and">{{symbol}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)

acd*_*ior 12

要在组件中访问枚举,您必须像处理一样声明属性,但不应声明类型 Symbols(使用:),而应分配Symbol给它(使用=).

要声明<select>的选项,您应该使用*ngFor<option>S,不在<select>.

此外,要迭代枚举,您必须使用Object.keys(symbols),keys(symbol)在下面的模板中使用别名.

Stackblitz演示在这里.

import { Component } from '@angular/core';

export enum Symbols {
  equals = '\u003D',
  notEquals = '!='
}

@Component({
  selector: 'my-app',
  template: `
    <p>
      Having the name as label and symbol as value:
      <select>
        <option *ngFor="let symbol of keys(symbols)" [ngValue]="symbols[symbol]">{{symbol}}</option>
      </select>
    </p>
    <p>
      Having the symbol as label and name as value:
      <select>
        <option *ngFor="let symbol of keys(symbols)" [ngValue]="symbol">{{symbols[symbol]}}</option>
      </select>
    </p>
  `
})
export class AppComponent  {
  keys = Object.keys;
  symbols = Symbols;
}
Run Code Online (Sandbox Code Playgroud)