Привязать значение перечисления к таблице материалов angular - PullRequest
0 голосов
/ 27 мая 2020

Есть ли способ привязать значение enum к моей angular таблице материалов?

Например: у меня есть enum.

export enum EnumName {
  val1 = 1,
  val2 = 2,
  val3 = 3
}

, а затем на моем angular таблица материалов, которую я хочу отобразить.

Id   EnumNameColumn
1    val2
2    val3
3    val1

Не так.

Id   EnumNameColumn
1    2
2    3
3    1

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вы можете использовать что-то вроде

dataSource = Object.keys(EnumName)
    .filter((x:any)=>x==Number(x))
    .map((x:any)=>({key:x,value:EnumName[x]}));
1 голос
/ 27 мая 2020

Вот простое решение для извлечения строк из перечисления. результат передается в виде массива строк:

Используйте метод getKeyListOfEnum()

public getKeyListOfEnum<T>(enm: T): Array<string> {
    let retVal = [];

    if (this.isEnum(enm)) {

        // extract the keys of the enum (Strings only!)
        retVal = Object.keys(enm).filter(
            k => typeof enm[k as any] === 'number'
        );
    }

    return retVal;
}


// check whether it is an ENUM
private isEnum(instance: Object): boolean {
    const keys = Object.keys(instance);
    const values = [];

    for (const key of keys) {
        let value = instance[key];

        if (typeof value === 'number') {
            value = value.toString();
        }

        values.push(value);
    }

    for (const key of keys) {
        if (values.indexOf(key) < 0) {
            return false;
        }
    }

    return true;
}

И затем вы можете использовать его как-то так:

export enum Fruit {
    APPLE,
    ORANGE,
    PEAR
}


keyArray: Array<string> = [];
keyArray = this.getKeyListOfEnum(Fruit);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...