2017-09-02 12 views
5

मैं निम्न मार्कअप है कहो?निर्देश से होस्ट घटक का उपयोग कैसे करें?</p> <pre><code><my-comp myDirective></my-comp> </code></pre> <p>वहाँ किसी भी तरह से मैं निर्देश</strong> से घटक उदाहरण <strong>का उपयोग कर सकते है:

अधिक विशेष रूप से मैं ऊपर एचटीएमएल के लिए कुछ भी जोड़ने के बिना MyDirective से गुण और MyComponent के तरीकों का उपयोग करने में, आदर्श सक्षम होना चाहते हैं।

उत्तर

5

तुम बस यह

class MyDirective { 
    constructor(private host:MyComponent) {} 

एक गंभीर सीमा है इंजेक्षन कर सकते हैं, कि आप पहले घटक के प्रकार पता करने की जरूरत।

https://github.com/angular/angular/issues/8277
यह कुछ कामकाज भी प्रदान करता है जब आप अग्रिम प्रकार को नहीं जानते हैं।

+0

धन्यवाद, गुंटर, यह काम करता है। आदर्श रूप में मुझे एक सामान्य समाधान की आवश्यकता होगी जो किसी भी घटक के लिए काम करता है। असल में आपके पास यह सुझाव हो सकता है कि मैं यहां क्या करने की कोशिश कर रहा हूं: https://stackoverflow.com/questions/46014977 – AngularChef

+0

कई लोगों द्वारा एक सामान्य समाधान का अनुरोध किया जाता है (जैसा कि आप लिंक किए गए मुद्दे में देख सकते हैं), लेकिन वर्तमान में वहां इसके लिए कोई आसान समाधान नहीं है। –

+0

@ गुंटर ज़ोचबॉउर मुझे लगता है कि हम एक इंटरफ़ेस का उपयोग कर सकते हैं उदा। 'कन्स्ट्रक्टर (निजी होस्ट: होस्टेड कॉम्पोनेंट इंटरफेस) {}' और यह आवश्यक है कि निर्देश का उपयोगकर्ता उस इंटरफ़ेस को लागू करता है ?? – Ryan

0

आपका निर्देश सामान्य हो सकता है जिसे आपके किसी भी घटक पर लागू किया जा सकता है। तो, उस मामले में, निर्माता में घटक इंजेक्शन लगाने के संभव नहीं होगा, तो यहाँ क्या करने के लिए एक ही

सम्मिलित करें ViewContainerRef निर्माता

constructor(private _viewContainerRef: ViewContainerRef) { } 

और उसके बाद में एक अन्य तरीके से हो यह

उपयोग कर रहा है
let hostComponent = this._viewContainerRef["_data"].componentView.component; 
संबंधित मुद्दे