नोट: सादगी के रूप में घटक गहराई पर विचार के लिए:कोणीय 2 +/4/5: स्मार्ट, गूंगा और गहराई से नेस्टेड घटक संचार
- Smart (grand)parent level 0
- dumb child level 1
....
- dumb grandchild level 2
....)
वहाँ विभिन्न विकल्प और पर स्थितियां हैं कैसे स्मार्ट/भव्य/माता-पिता/बाल घटक संवाद करते हैं और एक बहु-स्तर (कम से कम 3 स्तर) श्रृंखला को ऊपर और नीचे डेटा पास करते हैं। हम अपने 'स्मार्ट' (ग्रैंड) पैरेंट घटक को एकमात्र घटक के रूप में रखना चाहते हैं जिसके पास हमारी डेटा सेवा (या परमाणु/अपरिवर्तनीय स्टोर) तक पहुंच है और यह 'गूंगा' (ग्रैंड) बच्चों के साथ जानकारी का आदान-प्रदान चलाएगा। हमारे द्वारा देखे जाने वाले विकल्प हैं:
- एंटी-पैटर्न (?): @ इनपुट/@ आउटपुट बाइंडिंग के माध्यम से घटक श्रृंखला को नीचे और ऊपर डेटा पास करें। कुछ लोगों को 'अपर्याप्त गुण' या 'कस्टम इवेंट बबलिंग समस्या' समस्या के रूप में संदर्भित किया जाता है (उदाहरण: here और here।) समस्या। नही जाओ।
- एंटी-पैटर्न: @ViewChildren या @ContentChilden के माध्यम से गूंगा (भव्य) बच्चों के लिए स्मार्ट घटक पहुंच। यह फिर से बच्चों को कड़ी मेहनत करता है और अभी भी (ग्रैंड) बच्चों को स्मार्ट घटक को डेटा यूपी पास करने के लिए एक स्वच्छ तंत्र नहीं बनाता है।
- साझा संदेश सेवा angular.io रसोई की किताब here और एक उत्कृष्ट पोस्ट here में वर्णित है।
- ?
अब '3' के मामले में, गूंगा (भव्य) बच्चों को संदेश सेवा इंजेक्शन होना चाहिए। जो मुझे अपने सवालों के लाता है:
Q1: यह संदेश सेवा इंजेक्शन के लिए 'गूंगा' (भव्य) बच्चों में से प्रत्येक के लिए सहज अजीब लगता है। संदेश सेवा के लिए इस परिवार के लिए समर्पित सेवा होने का सबसे अच्छा अभ्यास है या क्या यह उपरोक्त वर्णित 'स्मार्ट' दादाजी के डेटा सेवा पर वापस आ गया है?
Q1A: इसके अतिरिक्त, कैसे है इतना @ इनपुट/आउटपुट @ बाइंडिंग ऊपर और श्रृंखला के नीचे जोड़ने सभी घटकों को एक सेवा इंजेक्शन होगा अगर तुलना में बेहतर? (मुझे तर्क है कि 'गूंगा' घटक को जानकारी प्राप्त करने के लिए कुछ तरीके की आवश्यकता है)
प्रश्न 2: क्या होगा यदि 'स्मार्ट' ग्रैंड पेरेंट रेडक्स जैसी दुकान (हमारे लिए ngrx) से संचार कर रहा था? एक बार फिर 'गूंगा' घटकों के साथ संचार इंजेक्शन/समर्पित संदेश सेवा के माध्यम से सबसे अच्छा होता है या स्टोर को प्रत्येक 'गूंगा' घटक में इंजेक्ट करना सर्वोत्तम होता है ... या? नोट, अंतर-घटक संचार डेटा के अलावा 'क्रियाओं' (उदाहरण: फॉर्म सत्यापन, अक्षम बटन, आदि) का संयोजन है (यानी स्टोर या सेवा को अपडेट/अपडेट करें)।
विचारों की बहुत सराहना की!
आपके विचारों के लिए धन्यवाद। नोट, फिर से decoupling के मामले में, शीर्ष स्तर के घटक आईएमओ अप्रत्यक्ष सेवाओं प्रदान करने से परे अपने पोते के बारे में वास्तव में परवाह या पता नहीं होना चाहिए जो इसकी मुख्य जिम्मेदारी है। बीटीडब्ल्यू, यह मेरे मूल प्रश्न में विकल्प '2' से बहुत अलग नहीं है। – MoMo
आपका स्वागत है। मुझे लगता है कि मैं जो कह रहा हूं उसे प्राप्त करता हूं - शीर्ष-स्तरीय पैरेंट घटक को अब यह नहीं पता होना चाहिए कि बच्चे के घटकों की क्या ज़रूरत है, बल्कि उनकी सटीक पदानुक्रमिक संरचना भी है। मैं इसके साथ व्यक्तिगत रूप से ठीक हूं, क्योंकि मैं इस तरह के समन्वय को मूल घटक के काम के रूप में देखता हूं। या मैं जेएसओएन को पदानुक्रमित व्यूमोडेल में परिवर्तित करने के लिए एक सेवा बनाता हूं जिसमें प्रेजेंटेशनल डेटा/कॉलबैक (इकाई परीक्षण के लिए अच्छा) शामिल है। आप सही हैं, यह आपके दूसरे विकल्प की तरह है, लेकिन वास्तव में बच्चों को देखने के बिना। वैसे भी, मैं यह देखने के लिए उत्सुक हूं कि आप इसे कैसे हल करते हैं। सौभाग्य! –