首页 > 解决方案 > 如何通过索引/序数迭代Angular 5中的枚举?

问题描述

我在 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”。

标签: angulartypescriptenums

解决方案


您可以创建枚举实例并通过 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


推荐阅读