2017-02-17 12 views
8

mam z relaksującego Służby następujące dane:Obsada int do wyliczenia sznurki w maszynopisie

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

I jestem mapowanie z tej klasy:

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


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

Ale kiedy dostęp „typ” w Angular2 otrzymuję tylko wartość int. Ale chciałbym uzyskać wartość ciągu.

przykład:

'message.type=0' 
{{message.type}} => should be Info 
'message.type=1' 
{{message.type}} => should be Warning 
+0

Czy jest to problem w czasie kompilacji lub problem z uruchomieniem? –

+0

Kompiluje i działa dobrze. Dla '{{message.type}]' otrzymuję '0', ale chcę uzyskać' Info'. –

Odpowiedz

10

wyliczenia maszynowo są liczbami w czasie pracy, więc message.type będzie 0, 1, 2 lub 3.

Aby uzyskać wartość ciągu, trzeba przekazać tę liczbę do wyliczenia jako index:

Type[0] // "Info" 

Więc w przykładzie, trzeba to zrobić:

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

Docs

+0

Jak mogę to zrobić? Tak teraz odwzorowuję: '(response => response.json() jako Message []' –

+0

Importuj 'Type' do twojego pliku, a zamiast robić' message.type', aby uzyskać wartość, wykonaj ' Wpisz [message.type] '. Zrób to tam, gdzie chcesz mieć wartość ciągu znaków –

+4

Niestety,' Typ' nie będzie dostępny wewnątrz szablonu, chyba że dodasz go jako właściwość do klasy komponentu jako 'public Type = Type;' –

8

Wyliczenia w TypeScript to obiekty w środowisku wykonawczym, które mają właściwości, które pochodzą od int -> string i od string -> int dla wszystkich możliwych wartości.

Aby uzyskać dostęp wartość ciągu trzeba będzie zadzwonić:

Type[0] // "Info" 

Upewnij się, że jesteś przejazdem odpowiedni typ do akcesor nieruchomości, choć ze względu łańcuchu połączenia mogą spowodować następujące:

Type[Type.Info] // "Info" 
Type[Type[Type.Info]] // 0 
Type["Info"] // 0 
Type[0] // "Info" 
0

myślę ze

{{message.type}} 

po prostu uzyskać odwzorowaną wartość i nie enum . Proszę spróbować następującego kodu.

{{TYPE[message.type]}} 
+0

Niestety ten kod nie wyszedł. –