2016-05-23 10 views
14

मेरे पास एक कोणीय 2 एप्लिकेशन है जिसमें उपयोगकर्ता नामक वर्ग है। इस उपयोगकर्ता के पास हटाए गए_ट नामक एक विशेषता है जो या तो शून्य है या डेटाटाइम है, जाहिर है कि हटाए गए_एट प्रॉपर्टी शून्य नहीं होने पर उपयोगकर्ता हटा दिया जाता है। यह कैसे मेरे user.ts फ़ाइल लग रहा है:टेम्पलेट के अंदर एक कोणीय 2 कक्षा से कॉलिंग विधि

User.ts

export class User { 
    id: number; 
    email: string; 
    created_at: string; 
    first_name: string; 
    last_name: string; 
    deleted_at: any; 

    name() { 
     if (this.deleted_at === null) { 
      return this.first_name; 
     } else { 
      return 'DELETED'; 
     } 
    } 
} 

अब मैं उम्मीद है कि मैं सिर्फ एक सरल रेखा के साथ अपने टेम्पलेट में नाम कह सकते हैं:

{{ user.name }} 

हालांकि यह कुछ भी नहीं लौटाता है, आप कोणीय 2 टेम्पलेट में कुछ फ़ंक्शंस कैसे कॉल कर सकते हैं? या यह अनुमति नहीं है?

संपादित करें: थोड़ा स्पष्ट करने के लिए सामान, इस है कि मैं अपने घटक में उपयोग कर रहा हूँ उपयोगकर्ता के list.component.ts, एक से अधिक उपयोगकर्ता इस घटक में नियंत्रित किया जाता है एक वर्ग उपयोगकर्ता है।

{{user.name()}} // instead of {{user.name}} 

इस दृष्टिकोण आप जानते हैं कि आप निष्पादन संदर्भ (this) खो देंगे होने की जरूरत के लिए:

उत्तर

10

या तो आप इस तरह विधि कॉल। अधिक जानकारी के लिए इस सवाल का देखें:

या आप एक गेटर के रूप में अपने विधि को परिभाषित ताकि आप अपने टेम्पलेट में user.name उपयोग कर सकते हैं:

get name() { 
    if (this.deleted_at === null) { 
    return this.first_name; 
    } else { 
    return 'DELETED'; 
    } 
} 
+1

आपके उत्तरों के लिए धन्यवाद, मैं अभी भी वहां नहीं हूं। जब मैं आपके जैसे गेटटर को परिभाषित करता हूं तो मुझे एक टीएस त्रुटि मिलती है जो कहती है: '=' अपेक्षित, क्या आपको पता है कि वाक्यविन्यास में कुछ गलत है या नहीं? – hY8vVpf3tyR57Xib

+0

मां अजीब। इस plunkr देखें: https://plnkr.co/edit/Twhqy3uKbvALwTrjJh0j?p=preview। इससे मेरा काम बनता है। आपने जो भी प्रयास किया उसके साथ कोई अंतर? –

+0

आह टाइपस्क्रिप्ट त्रुटि सिर्फ एक वाक्यविन्यास समस्या थी। आपके प्लंकर और मेरे उदाहरण के साथ मुख्य अंतर यह है कि मेरे उदाहरण में मैं अपने टेम्पलेट में उपयोगकर्ताओं की एक सूची पर लूप करता हूं: * ngFor = "उपयोगकर्ताओं के उपयोगकर्ता को दें", और प्रत्येक प्रविष्टि के लिए मैं user.name को कॉल करता हूं। यह एक खाली स्ट्रिंग देता है, ऐसा इसलिए हो सकता है क्योंकि टेम्पलेट यह नहीं पहचानता कि यह एक उपयोगकर्ता श्रेणी वस्तु है? – hY8vVpf3tyR57Xib

0

टेम्पलेट आप बात कर रहे हैं, तो ऊपर आपके घटक से है आप {{ name() }} सरल कर सकते हैं। कोणीय 2 में आपको पहले घटक को कॉल करने के लिए अपने घटक को संदर्भित नहीं करना चाहिए क्योंकि यह कोणीय 1 मामले में था। यदि आपकी कक्षा सिर्फ एक मॉडल है जिसे आपने अपने componet में घोषित किया है, तो आपको पहले उस मॉडल का संदर्भ प्राप्त करना होगा और फिर अपनी विधि {{ user.name() }} पर कॉल करना होगा। हालांकि, अगर आपकी विधि सिर्फ एक सादा गेटर है, तो मैं वहां एक विधि कॉल करने की बजाय सार्वजनिक संपत्ति का उपयोग करूंगा।

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