Angular5:使用* ngFor迭代枚举

时间:2018-03-21 00:09:51

标签: angular typescript enums ngfor

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

现在我的代码如下:

枚举

export enum Symbols {
  equals = '\u003D'
}

component.ts

symbols: Symbols;

component.html

<select *ngFor="let symbol of symbols">
     <option value="and">{{symbol}}</option>
</select>

1 个答案:

答案 0 :(得分:10)

要在组件中访问枚举,您必须像处理的那样声明属性,而不是声明 type Symbols(使用:),您应该为其指定Symbol(使用=)。

要使用选项声明<select>,您应该使用*ngFor中的<option>,而不是<select>

此外,要迭代枚举,您必须使用Object.keys(symbols)keys(symbol)在下面的模板中为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; } 设置别名。

this

<property name="deploy.root.dir" value="\\${deploy.server}\${deploy.mode}\${deploy.env}\${app.dest.dir}\" />
<if test="${deploy.env == 'PROD'}">
    <property name="deploy.root.dir" value="\\${deploy.server}\${deploy.mode}\${app.dest.dir}\" />
</if>