मेरे पास मेरे app.component में एक साइडबार है। मैं इसे कई बाल घटकों से अपडेट करने में सक्षम होना चाहता हूं। बच्चे से मूल घटक को डेटा भेजने के तरीके के बारे में यहां एक नमूना है:

https://dzone.com/articles/understanding-output-and-eventemitter-in-angular

हालांकि नमूना माता-पिता को एक विशिष्ट बाल घटक से बांधता है:

import { Component, OnInit } from '@angular/core';
@Component({
    selector: 'app-root',
    template: `<app-child></app-child>`
})
export class AppComponent implements OnInit {
    ngOnInit() {
    }
}

जैसा कि आप टेम्पलेट को ऐप-चाइल्ड विशिष्ट के लिए बाध्य देख सकते हैं। आप अधिक सामान्य समाधान कैसे बना सकते हैं ताकि कई बच्चे मेनू अपडेट करने के लिए एक ईवेंट भेज सकें?

1
Thomas Segato 27 सितंबर 2018, 12:33

2 जवाब

सबसे बढ़िया उत्तर

एक सेवा के माध्यम से संचार इसे पूरी तरह से सामान्य रखता है। यह पैरेंट चाइल्ड कॉम तक सीमित नहीं है, बल्कि किन्हीं 2 घटकों के बीच काम करता है:

दस्तावेज़ यहाँ हैं - https://angular. io/गाइड/घटक-इंटरैक्शन#माता-पिता और बच्चे-संवाद-के-एक-सेवा

मूल रूप से, वह घटक जो डेटा भेजना चाहता है, डेटा को सेवा पद्धति में भेजता है। सेवा तब एक विषय के लिए (next(data)) उत्सर्जित करती है। विषय की सदस्यता लेने वाली कोई भी चीज़ तब डेटा प्राप्त करती है।

आप इन दिनों रूट स्तर पर सेवा प्रदान कर सकते हैं:

@Injectable({
  providedIn: 'root'
})

इसे अपने प्रदाता सरणी में सूचीबद्ध किए बिना। मुझे लगता है कि यह केवल कोणीय 6 है। फिर सेवा मांग पर लोड की जाती है। वैकल्पिक रूप से, आप प्रदाता सरणी में सेवा प्रदान कर सकते हैं।

यदि आप अधिक तकनीकी जांच प्राप्त करना चाहते हैं ngrx जो एक वैश्विक स्टोर समाधान प्रदान करता है।

2
danday74 27 सितंबर 2018, 12:38

एक दृष्टिकोण जिसके बारे में मैं सोच सकता हूं कि साइडबार सेवा की तरह कुछ है जो आपका साइडबार घटक इंजेक्ट करता है।

साइडबार सेवा के अंदर आपके पास एक BehaviourSubject हो सकता है, जिसे आपके बच्चे के घटक भी एक्सेस कर सकते हैं और उन मूल्यों को उत्सर्जित कर सकते हैं जिन्हें आप अपने साइडबार घटक में सुन सकते हैं और तदनुसार प्रतिक्रिया कर सकते हैं।

संपादित करें - जैसे ही मैंने इसे पोस्ट किया, एक और जवाब आया जिसमें मेरी विचार रेखा की पुष्टि हुई!

2
mindparse 27 सितंबर 2018, 12:39