2016-02-03 17 views
20

में वैश्विक डेटा के बारे में फिर से यदि मेरा कोणीय 2 ऐप इस तरह दिखता है, और शीर्ष पर गोरा दाएं मध्य में अदरक के साथ बात करने जा रहा है, तो क्या उसे इसके लिए एक पार्टी आयोजित करनी चाहिए? treeAngular2

एमिट घटनाएं, आउटपुट इनपुट का उपयोग करें - यह कोणीय 2 तरीका है? डेटा को बच्चे से माता-पिता तक रूट में और फिर माता-पिता से बच्चे तक बिंदु तक बहना चाहिए? मैं यहां नया हूं और अक्सर मैं कुछ वैश्विक वस्तु चाहता हूं जहां मैं कुछ जानकारी रख सकता हूं कि सभी घटकों को जानने की जरूरत है। जब उस वैश्विक वस्तु में डेटा बदलता है तो इसे अन्य सभी सेवाओं और घटकों में जादुई रूप से बदलना चाहिए जो इसे इंजेक्शन देते हैं। उदाहरण के लिए उपयोगकर्ता लॉगिन/लॉगआउट, या यदि वह बटन पर क्लिक करता है और इसी तरह।

import {Injectable} from 'angular2/core'; 

@Injectable() 
export object Globals { 
    logged: false, 
    showThatDiv: true 
} 

लेकिन मैंने कहीं कहीं पढ़ा है कि यह कोणीय 1 है, कोणीय 2 तरीके नहीं। क्या यह सही है? या मैं गलत हूँ? यह वैश्विक सूप की तरह दिखता नहीं है, सिर्फ वैश्विक राज्य की वस्तु है।

|-root 
    |-google api component 
    |-google auth 
    |-youtube api 
     |-playlists 
     |-video 
    |-myComponent 
    |-sub1 
     |-sub2 
     |-sub3 
    |... 

mySub1 घटक उपयोगकर्ता लॉग ऑन करता है, तो जानने की आवश्यकता है यदि ऐसा है तो पता चलता है (* ngIf) sub2 में कुछ div:

उदाहरण के लिए अब मैं इस संरचना है। या googleSuth सेवा में mySub3 घटक कॉल checkGauth() से। MySub2 घटक से वीडियो को YouTube प्लेलिस्ट में जोड़ें और उप-शो में अतिरिक्त शो परिणाम, या उप 3 से नई प्लेलिस्ट बनाएं और इसे उप 2 पर दिखाएं। बहुत सारे प्रकार

मैं इसके लिए कोड लिखने के लिए थक गया हूं। यह इसे और अधिक जटिल बना देता है। और कभी-कभी सोच के बारे में ऐसा करते हैं: अपने API से प्रत्येक के लिए

|-root 
    |-google api component 
    |-google auth 
    |-youtube api 
    |-playlists 
    |-video 
    |-myComponent 
    |-sub1 
    |-sub2 
    |-sub3 
    |... 
+7

सेवाएं सिंगलेट हैं और इन्हें राज्य साझा करने के लिए उपयोग किया जा सकता है। – dfsq

+14

अब मैं बकरियों के बारे में सोचने के बिना कोणीय 2 के बारे में सोचने में सक्षम नहीं हूं ... धन्यवाद> _> – cdvv7788

+1

सामान्य रूप से, यह निर्भर करता है ... आपका प्रश्न बहुत व्यापक है। जब आप कहते हैं "जब डेटा बदलता है ... इसे अन्य सभी में बदलना चाहिए ... घटक" - क्या घटकों को अधिसूचित करने की आवश्यकता है, या डेटा को केवल बदलने की आवश्यकता है? यानी, क्या आपको कुछ करने के लिए घटकों की आवश्यकता है, जैसे डेटा बदलते समय फ़ंक्शन को कॉल करें, या आपको केवल अपडेट करने के लिए उनके विचारों की आवश्यकता है, जो कोणीय आपके लिए स्वचालित रूप से करेगा? मेरा सुझाव है कि आप एक और विशिष्ट प्रश्न पूछें, या शायद कुछ प्रश्न पूछें। –

उत्तर

6

बिल्डिंग सेवाएं एक साथ अव्यवस्थित होने से घटकों को अलग करने का एक शानदार तरीका है। आपके मामले में आपको GoogleService बनाने की आवश्यकता है, यह वर्तमान स्थिति पर आपका संदर्भ रख सकता है कि एप्लिकेशन चल रहा है। सेवाएं आपके घटकों को इंजेक्ट करने में सक्षम होती हैं जब उन्हें और कहां की आवश्यकता होती है।

यह कहकर कि कोई अच्छी लाइन नहीं है जिसे हम कुछ मामलों में आकर्षित कर सकते हैं। उन मामलों में,

  1. संदेश पासिंग, डेटा अपने घटकों के माध्यम से, दर्रा अगर आप माता-पिता लॉग इन के बारे में जानता है और बच्चे, लॉग इन के बारे में पता है कि यह माध्यम से पास करने के लिए चाहता है आपके मामले में, और बाइंडिंग रखेंगे यह आपके बच्चे के घटकों पर भरोसेमंद रूप से इसका उपयोग करने के लिए अपडेट किया गया है।

  2. एक सहायक बनाएं जो आपकी सुविधा से संबंधित सभी कार्यों को समाहित करता है। इसे पुराने फैशन आयात का उपयोग करके संदर्भित करें और इसे अपने घटकों पर उपयोग करें।

उत्सर्जन घटनाओं, उपयोग एक आउटपुट आदानों - इस angular2 तरीका है?

हां, यह जानने का सबसे अच्छा तरीका है कि आपके घटकों की क्या ज़रूरत है और घटक उत्सर्जित हैं। लेकिन यह मुश्किल नहीं है, दो-तरफा डेटा बाध्यकारी आपको कम से कम प्रयास के साथ काम करने देता है।

डाटा बच्चे से माता-पिता के लिए रूट करने के लिए माता-पिता से बच्चे को बात करने के लिए प्रवाह चाहिए और फिर?

बच्चे इनपुट के माध्यम से माता पिता से डेटा प्राप्त और कॉलबैक के रूप में एक निर्गम लौट चलो, Checkout this Blog to see how it is done on a real world app.

आशा है कि यह आप आरंभ करने के लिए मदद करता है। कोणीय 2 में आपका स्वागत है आप इसे यहां प्यार करेंगे!

+0

को अद्यतन किया है यदि मुझे googleSuth सेवा में mySub3 घटक कॉल checkGauth() से आवश्यकता है, तो ng2 तरीके से कैसे करें? – ivanesi

+0

इस प्लंकर की जांच करें, http://plnkr.co/edit/sJ9wAh4df3r5fdMYFHXd?p=preview heroservice को नोटिस करें, इसे कन्स्ट्रक्टर पर घटक में पास कर दिया गया है और फिर आप नियंत्रक पर this.googleAuthService.checkGAuth() कर सकते हैं। –