2015-10-28 8 views
5

यह निकटतम मैं on github मिल गया हैES2016 सजावट के साथ Angular2 DI?

मेरी सेवा

@Injectable() export class TodoService {}

है लेकिन मैं अनिश्चित कैसे मेरे घटक ES2016 सज्जाकार का उपयोग कर को इसकी सुई देने हूँ। क्या यह भी संभव है, या सजावटी टाइपस्क्रिप्ट-विशिष्ट हैं? मुझे टीएस में पता है कि emitDecoratorMetadata विकल्प है। घटक निर्माता में मानकों प्रकार का उल्लेख

  • इंजेक्षन सेवा:

  • उत्तर

    5
    1. उपयोग providers या viewProviders सेवा घटक को "प्रदान करने के लिए"

    @Component({ 
        // ... 
        providers: [TodoService] 
    }) 
    class TodoComponent() { 
    
        constructor(todoService: TodoService) { 
        this.todoService = todoService; 
        } 
    } 
    

    या Inject पैरामीटर डेकोरेटर का उपयोग कर।

    @Component({ 
        // ... 
        providers: [TodoService] 
    }) 
    class TodoComponent() { 
    
        constructor(@Inject(TodoService) todoService) { 
        this.todoService = todoService; 
        } 
    } 
    

    पैरामीटर सजावटी ES2016 का हिस्सा नहीं हैं (आप इसे टाइपस्क्रिप्ट विशिष्ट के रूप में मान सकते हैं)। लेकिन वे added to the standard later हो सकते हैं)।

    तुम सच में ES6/ES7 उपयोग करना चाहते हैं, parameters के लिए स्थिर गेटर का उपयोग करें:

    @Component({ 
        // ... 
        providers: [TodoService] 
    }) 
    class TodoComponent() { 
    
        static get parameters() { 
        return [[TodoService]]; // you can also return just [TodoService] 
        } 
    
        constructor(todoService) { 
        this.todoService = todoService; 
        } 
    } 
    

    इसके अलावा, मैं आप की सिफारिश this article पढ़ने के लिए बेहतर angular2 निर्भरता इंजेक्शन को समझने के लिए।

    +0

    तो उन दोनों कार्यान्वयन टाइपस्क्रिप्ट विशिष्ट हैं? ES2016 सजावट का उपयोग करने का कोई तरीका नहीं है (जिसमें पैरामीटर सजावट शामिल नहीं है, लिंक के लिए धन्यवाद)? – iksose

    +0

    @iksose मैंने ES6/ES7 – alexpods

    +0

    परफेक्ट के लिए उदाहरण जोड़ा है! अद्भुत काम करता है, धन्यवाद @alexpods – iksose

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