2017-02-17 12 views
8

dizeleri enum Angular2 içinde sadece int değeri alırım. Ama bir dize değeri almak istiyorum.Dökme int ben bir sığınakta Hizmeti'nden aşağıdaki verileri almak typescript

örn: daktilo

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

Bu derleme zamanı sorunu mu yoksa çalışma zamanı mı? –

+0

Bu derler ve iyi çalışır. '{{Message.type}]' '0' ı alıyorum ama 'Bilgi 'almak istiyorum. –

cevap

10

Numaralamalar zamanında sayılardır, yani message.type0, 1, 2 veya 3 olacaktır.

Type[0] // "Info" 

Yani, örnekte, bunu yapmak gerekir::

dize değeri elde etmek için, bir endeks olarak enum içine bu numarayı geçmesi gerekiyor

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

Docs

+0

Bunu nasıl yapabilirim? Şu anda bu gibi eşleştiriyorum: '(response => response.json() olarak Message []' –

+0

Dosyanıza 'Type' yazın ve' message.type' yerine değer elde etmek yerine ' [Message.type] 'yazın. Dize değerini –

+4

istediğiniz yere yaparsınız Ne yazık ki,' Type ', bir öğe içinde, public class = Type; –

8

numaralamalar tüm olası değerler için int -> string gitmek ve string -> int gelen özelliklere sahip zamanında nesnelerdir.

Type[0] // "Info" 

zincirleme çağrılar aşağıdaki neden olabilir çünkü olsa mülkiyet erişgeç içine doğru türü geçiyoruz emin olun:

aramak gerekir dize değeri erişmek için

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

Ben sadece eşlenen değeri değil enum olsun

{{message.type}} 

ile düşünmek . Lütfen aşağıdaki kodu deneyin.

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

Ne yazık ki bu kod işe yaramıyor. –

İlgili konular