如何通过索引/序数迭代Angular 5中的枚举?

时间:2019-06-05 02:04:54

标签: angular typescript enums

我在Angular 5应用中具有以下枚举:

export enum Month {
  JAN='January',
    FEB='February',
    MAR='March',
    APR='April',
    MAY='May',
    JUN='June',
    JUL='July',
    AUG='August',
    SEP='September',
    OCT='October',
    NOV='November',
    DEC='December'
}

我想做的是遍历值并将它们与日期进行比较 字段中,我在代码中的某处类似:

date.getMonth()  which return number 0-11

我可以遍历枚举,但是我无法获得序数! 我已经尝试了两种解决方案:

 for (let month in Month) {

var months = Object.keys(Month);
for (let month of months)

两个解决方案均返回字符串,例如“ JAN”。

1 个答案:

答案 0 :(得分:3)

您可以创建enum的实例,并通过Object.keys方法对其进行迭代

TS文件

export class AppComponent  {
  name = 'Angular';
  month = Month;
  constructor(){

  }

   keyinenum() : Array<string> {
        var keys = Object.keys(this.month);
        return keys.slice();
    }
}

HTML

 <div *ngFor="let item of keyinenum()">
      {{ item }}
    </div>

更新:

如果您只想从0-11月份获取月份,则可以使用此方法

 getValueByIndex(inputindex) {
    var keys = Object.keys(this.month);
    let result = "";
    keys.forEach((obj, index) => {
      if (inputindex == index) {
        result = Month[obj];
      }
    });
    return result;
  }

https://stackblitz.com/edit/angular-iterate-enum?file=src/app/app.component.ts