Как перебрать перечисление в Angular 5 через index / ordinal? - PullRequest
0 голосов
/ 05 июня 2019

У меня есть следующее перечисление в приложении 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 Ответ

3 голосов
/ 05 июня 2019

Вы можете создать экземпляр 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...