मैं एक कोणीय घटक बना रहा हूं जिसे उपयोगकर्ता अपने ईमेल पर भेजे गए लिंक पर क्लिक करके एक्सेस करता है, जिसमें उनकी यूजर आईडी होती है। मुझे इसे बनाने की आवश्यकता है ताकि यह स्वचालित रूप से उन्हें व्यवस्थापक पृष्ठ पर पुनर्निर्देशित कर दे यदि उन्होंने अपना पंजीकरण पहले ही पूरा कर लिया है। हालांकि, ऐसा लगता है कि ngOnInit ईवेंट के अंदर router.navigate का उपयोग करने से काम नहीं चलता, त्रुटि दे रहा है

त्रुटि: ध्यान में न आया (वादे में): त्रुटि: BrowserModule पहले ही लोड किया जा चुका है।

यहाँ कोड है:

ngOnInit() {
this.activatedroute.params.subscribe(params => {
  this.API.getUserData(params['id']).subscribe(res => {
    console.log(res);
    this.item = res;
    sessionStorage.setItem('USER_ID', this.item._id);
    if (res["registry_complete"]){
      this.router.navigate(['/user-admin']);
    } else {
    }
  });
});
}

मैं इसे कैसे पूर्ण करूं?

संपादित करें: त्रुटि क्या कहती है, इसके बावजूद, मुख्य मॉड्यूल में BrowserModule केवल एक बार आयात किया जाता है। अगर "this.router.navigate(['/user-admin']);" हटा दिया गया है, कोड ठीक चलता है। यह ngOnInit या कंस्ट्रक्टर फ़ंक्शंस के बाहर भी ठीक चलता है। मुझे इस त्रुटि का कारण संदेह है क्योंकि राउटर.नेविगेट मुख्य मॉड्यूल को फिर से लोड करने का प्रयास करता है, और चूंकि पृष्ठ लोड होने के बीच में है इसलिए यह ब्राउज़र मॉड्यूल को दो बार आयात करता है - लेकिन यदि ऐसा है, तो कैसे करता है em> एक कोणीय में इस तरह पुनर्निर्देशित करता है?

संपादित करें: यह वास्तव में उपयोगकर्ता-व्यवस्थापक रूटिंग मॉड्यूल में एक समस्या थी।

1
IndigoFenix 22 जुलाई 2019, 11:37
क्या आप अपना ऐप.मॉड्यूल पोस्ट कर सकते हैं?
 – 
Robert garcia
22 जुलाई 2019, 11:39
आपको इसे ngOnInit के बजाय कंस्ट्रक्टर के अंदर करना चाहिए।
 – 
Radwojt
22 जुलाई 2019, 11:45
ऐसा ही होता है अगर यह कंस्ट्रक्टर के अंदर किया जाता है।
 – 
IndigoFenix
22 जुलाई 2019, 11:46
इस त्रुटि का ngOnInit से कोई लेना-देना नहीं है। अपने ऐप में BrowserModule खोजें। इसे केवल एक बार आयात किया जाना चाहिए। यदि यह दो बार होता है, तो बाद की घटना को हटा दें,
 – 
Saurabh Tiwari
22 जुलाई 2019, 11:55
BrowserModule केवल एक बार आयात किया जाता है। यदि "this.router.navigate" को हटा दिया जाता है, तो यह ठीक चलता है। यदि "this.router.navigate" NgOnInit या कंस्ट्रक्टर के बाहर चलाया जाता है, तो यह भी ठीक चलता है।
 – 
IndigoFenix
22 जुलाई 2019, 11:58

2 जवाब

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

त्रुटि कहती है कि किसी तरह, आपने अपने ऐप्स में एक से अधिक बार BrowserModule आयात किया है। जैसा कि docs में बताया गया है, BrowserModule मॉड्यूल को ऐप के रूट मॉड्यूल में आयात किया जाना चाहिए:

BrowserModule को किसी अन्य मॉड्यूल में आयात न करें। फ़ीचर मॉड्यूल और आलसी लोडेड मॉड्यूल को इसके बजाय CommonModule आयात करना चाहिए। उन्हें सामान्य निर्देशों की आवश्यकता है। उन्हें ऐप-वाइड प्रदाताओं को फिर से स्थापित करने की आवश्यकता नहीं है।

साथ ही, NoopAnimationsModule और BrowserAnimationsModule में BrowserModule होते हैं, इसलिए यदि आप उनमें से किसी एक का आयात कर रहे हैं, तो आपको आयात BrowserModule (यदि आपके पास है) को हटाना होगा।

1
Vadi 22 जुलाई 2019, 12:09
BrowserModule रूट मॉड्यूल में केवल एक बार आयात किया जाता है। मुझे संदेह है कि पृष्ठ को प्रारंभ करते समय पुनर्निर्देशित करने का प्रयास रूट मॉड्यूल को कॉल कर सकता है (क्योंकि यह एक नया घटक लोड करने का प्रयास कर रहा है) और जब पृष्ठ लोड होने के बीच में है तो ऐसा करने से इसे आयात किया जा सकता है दो बार, इस त्रुटि को ट्रिगर करना। लेकिन अगर ऐसा है, तो आप एक नए पेज पर कैसे करते हैं?
 – 
IndigoFenix
22 जुलाई 2019, 11:56
1
इंडिगोफेनिक्स, क्या आप अपने प्रश्न में पथ /user-admin द्वारा घटक लोड करने के लिए मार्ग मॉड्यूल जोड़ सकते हैं, और जिस मॉड्यूल में यह घटक आयात किया गया है
 – 
Vadi
22 जुलाई 2019, 12:06
आप सही कह रहे हैं, यह उपयोगकर्ता-व्यवस्थापक रूटिंग मॉड्यूल में एक समस्या थी।
 – 
IndigoFenix
22 जुलाई 2019, 12:16

जांचें कि आप कौन से मॉड्यूल आयात कर रहे हैं .module.ts

यदि आप BrowserAnimationsModule का उपयोग कर रहे हैं

इसे BrowserModule से पहले रखें

और जांचें कि उप मॉड्यूल के आयात क्या हैं

0
Chanaka Weerasinghe 22 जुलाई 2019, 11:56