【问题标题】:How to iterate over an enum in Angular 5 via index/ordinal?如何通过索引/序数迭代Angular 5中的枚举?
【发布时间】:2019-06-05 02:04:54
【问题描述】:

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

【问题讨论】:

    标签: angular typescript enums


    【解决方案1】:

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

    【讨论】:

    • 我不需要它在模板上。您可以更新用户枚举类型 Month 的答案吗?
    • 我更新了答案,是否符合您的要求?
    猜你喜欢
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多