2017-02-17 3 views
8

में तार Enum के लिए मैं एक RESTful सेवा से निम्न डेटा प्राप्त:कास्ट पूर्णांक टाइपप्रति

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

और मैं इस वर्ग के साथ मानचित्रण कर रहा हूँ:

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


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

लेकिन जब मैं 'प्रकार' का उपयोग Angular2 में मुझे केवल एक int मान मिलता है। लेकिन मैं एक स्ट्रिंग मान प्राप्त करना चाहता हूं।

उदाहरण के लिए:

टाइपप्रति में
'message.type=0' 
{{message.type}} => should be Info 
'message.type=1' 
{{message.type}} => should be Warning 
+0

क्या यह संकलन-समय समस्या या रनटाइम समस्या है? –

+0

यह संकलित करता है और ठीक चलाता है। '{{Message.type}] के लिए 'मुझे' 0' मिलता है लेकिन मैं' जानकारी 'प्राप्त करना चाहता हूं। –

उत्तर

10

Enums रनटाइम पर नंबर दिए गए हैं, इसलिए message.type0, 1, 2 या 3 हो जाएगा।

स्ट्रिंग मान पाने के लिए आपको एक सूचकांक के रूप में enum में उस नंबर पारित करने के लिए की जरूरत है:

Type[0] // "Info" 

तो, अपने उदाहरण में, यदि आप ऐसा करने की आवश्यकता होगी:

Type[message.type] // "Info" when message.type is 0 
टाइपप्रति में

Docs

+0

मैं यह कैसे कर सकता हूं? मैं इस तरह मैपिंग कर रहा हूं: '(प्रतिक्रिया => प्रतिक्रिया.जेसन() संदेश के रूप में []' –

+0

अपनी फ़ाइल में 'टाइप करें' आयात करें, और मूल्य प्राप्त करने के लिए 'message.type' करने के बजाय, ' टाइप करें [message.type] '। आप ऐसा करते हैं जहां आप स्ट्रिंग मान –

+4

दुर्भाग्यवश,' टाइप' टेम्पलेट के अंदर उपलब्ध नहीं होंगे, जब तक कि आप इसे घटक वर्ग में 'सार्वजनिक प्रकार = प्रकार' के रूप में नहीं जोड़ते। –

8

Enums कार्यावधि में वस्तुओं है कि गुण है कि string -> int से int -> string से जाने के लिए और सभी संभव मूल्यों के लिए कर रहे हैं।

Type[0] // "Info" 

सुनिश्चित करें कि आप संपत्ति एक्सेसर में सही प्रकार से गुजर रहे हैं, क्योंकि श्रृंखलित कॉल निम्नलिखित में परिणाम कर सकते हैं::

स्ट्रिंग मान आप कॉल करना होगा उपयोग करने के लिए

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

मैं

{{message.type}} 

साथ लगता है कि तुम सिर्फ मैप की मूल्य और नहीं enum मिल । कृपया कोड का पालन करने का प्रयास करें।

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

दुर्भाग्यवश यह कोड काम नहीं करता है। –

संबंधित मुद्दे