Recibo de un Servicio RESTful los siguientes datos:

[
  {
    "id": 42,
    "type": 0,
    "name": "Piety was here",
    "description": "Bacon is tasty, tofu not, ain't nobody like me, cause i'm hot...",
  }...

Y estoy mapeando con esta clase:

export enum Type {
  Info,
  Warning,
  Error,
  Fatal,
}


export class Message{
  public id: number;
  public type: Type:
  public name: string;
  public description: string;
}

Pero cuando accedo a 'tipo' en Angular2 obtengo solo un valor int. Pero me gustaría obtener un valor de cadena.

E.g:

'message.type=0'
{{message.type}} => should be Info
'message.type=1'
{{message.type}} => should be Warning
53
Franz Peter Tebartz van Elst 17 feb. 2017 a las 16:31

3 respuestas

La mejor respuesta

Las enumeraciones en TypeScript son números en tiempo de ejecución, por lo que message.type será 0, 1, 2 o 3.

Para obtener el valor de la cadena, debe pasar ese número a la enumeración como índice:

Type[0] // "Info"

Entonces, en su ejemplo, necesitará hacer esto:

Type[message.type] // "Info" when message.type is 0

Docs

53
Dmitry Grinko 13 oct. 2017 a las 04:00

Pienso con

{{message.type}}

Solo obtienes el valor asignado y no la enumeración. Intenta seguir el código.

{{TYPE[message.type]}}
1
C.Stebner 17 feb. 2017 a las 14:12

Las enumeraciones en TypeScript son objetos en tiempo de ejecución que tienen propiedades que van desde int -> string y desde string -> int para todos los valores posibles.

Para acceder al valor de cadena, deberá llamar:

Type[0] // "Info"

Sin embargo, asegúrese de pasar el tipo correcto al descriptor de acceso a la propiedad porque las llamadas encadenadas pueden dar como resultado lo siguiente:

Type[Type.Info] // "Info"
Type[Type[Type.Info]] // 0
Type["Info"] // 0
Type[0] // "Info"
36
Teddy Sterne 17 feb. 2017 a las 13:47