2016-10-10 33 views
6

में विभिन्न मॉड्यूल घटक संचार मेरे पास एक घटक है और मैं चाहता हूं कि यह किसी दूसरे मॉड्यूल में डेटा को पास कर दे। असल में मेरे app.component इन बच्चों के मॉड्यूल के माता-पिता हैं। और मैं चाहता हूं कि प्रत्येक बच्चे मॉड्यूल कुछ डेटा app.component पर भेज दें। लेकिन वे केवल रूटिंग के एक हिस्से में बच्चे और माता-पिता हैं। इसलिए वे वास्तव में माता-पिता और बच्चे नहीं हैं, मुझे लगता है।कोणीय 2

मेरा मतलब है, app.component के लिए मेरे सांचा इस तरह दिखता है:

<div class="navbar-collapse collapse"> 
    <ul class="nav navbar-nav navbar-left"> 
     <li><a routerLink="link1" routerLinkActive="active">Page1</a></li> 
     <li><a routerLink="link2" routerLinkActive="active">Page2</a></li> 
     <li><a routerLink="link3" routerLinkActive="active">Page3</a></li> 
     <li><a routerLink="link4" routerLinkActive="active">Page4</a></li> 
    </ul> 
    </div> 
</nav> 
<div *ngIf="needsSidebar" id="sidebar">some content</div> 
<div> 
    <router-outlet></router-outlet> 
</div> 

तो app.component इन मॉड्यूल और उनकी घटकों के साथ कोई सीधा संबंध नहीं है। मैंने Output का उपयोग करने की कोशिश की लेकिन चूंकि घटक विभिन्न मॉड्यूल से हैं, यह असफल रहा। मैं खो गया हूँ मुझे क्या करना चाहिए। मैं अपने "बच्चों" मॉड्यूल को app.module पर डेटा भेजने के लिए यह बताने के लिए चाहता हूं कि उन्हें साइडबार की आवश्यकता है और कौन सा सामग्री साइडबार दिखाना चाहिए। मैं यह कैसे कर सकता हूं?

उत्तर

6

इससे कोई फर्क नहीं पड़ता कि मॉड्यूल कैसे संबंधित हैं। क्या मायने रखता है, अगर घटक घटकों के दृश्य में बच्चे हैं। इस मामले में आप कोणीय बाध्यकारी वाक्यविन्यास का उपयोग कर सकते हैं। अन्य मामलों में एक साझा सेवा का उपयोग करें। विवरण के लिए https://angular.io/docs/ts/latest/cookbook/component-communication.html

क्या मायने रखता है, जहां आप प्रदाता के रूप में साझा सेवा जोड़ते हैं। यदि आप इसे किसी घटक में जोड़ते हैं, तो केवल इस घटक का एक उदाहरण और उसके बच्चे और वंशज इस सेवा उदाहरण को साझा करते हैं। यदि आप @NgModule() के प्रदाताओं को सेवा जोड़ते हैं तो एक ही उदाहरण पूरे एप्लिकेशन (गैर आलसी लोड मॉड्यूल के लिए) के साथ साझा किया जाता है।

+0

मैंने आउटपुट के साथ कोणीय बाध्यकारी का उपयोग करने की कोशिश की लेकिन मेरे पास मेरे एचटीएमएल में कोई चयनकर्ता नहीं है, मेरे पास सिर्फ 'राउटर-आउटलेट' है, मैं इसके साथ एक ईवेंट कैसे पास कर सकता हूं? और जब मैंने इसे जांचने के लिए चयनकर्ता जुसन के साथ प्रयास किया तो मुझे यह त्रुटि मिली: 'zone.js: 355 अनचाहे वादा अस्वीकृति: टेम्पलेट पार्स त्रुटियां: 'बाल चयनकर्ता' ज्ञात तत्व नहीं है:' –

+0

बच्चे घटक को एनजी मॉड्यूल में 'निर्यात' में जोड़ा जाए: [] 'जहां यह घोषणाओं में है: []' और वर्तमान 'एनजी मॉड्यूल' में अन्य आयातों को 'आयात' में होना चाहिए: [] '। फिर '> के साथ बाध्यकारी होना चाहिए। राउटर द्वारा जोड़े गए घटकों के लिए, बाध्यकारी के लिए कोई समर्थन नहीं है। इस मामले के लिए आपको एक साझा सेवा का उपयोग करने की आवश्यकता है। –

+2

धन्यवाद, फिर, मुझे लगता है, साझा सेवा मेरे लिए है। –

1

इस परिदृश्य के लिए, आप sharedModule पर एक नज़र डाल सकते हैं। साझा मॉड्यूल शेयर services,pipes & etc जो आप विभिन्न मॉड्यूल/घटकों में प्राप्त करना चाहते हैं।