Back to Question Center
0

कोणीय रूटर के साथ घटक रूटिंग का परिचय            कोणीय रूटर के साथ घटक रूटिंग के लिए एक परिचय संबधित विषय: रॉ जावास्क्रिप्ट एनपीएम टूल्स एंड & Semalt

1 answers:
कोणीय रूटर के साथ घटक रूटिंग का परिचय

इस आलेख को सीपीयू एपी के साथ कोणीय सीएलआई बनाने के बारे में साइटपॉईन्ट कांगारू 2+ ट्यूटोरियल का भाग 4 है।


  1. भाग 0- अंतिम कोणीय सीएलई संदर्भ गाइड
  2. भाग 1- टोडो ऐप्लिकेशन का पहला संस्करण और चलाना
  3. भाग 2- टूडो की एक सूची प्रदर्शित करने के लिए अलग घटकों का निर्माण करना और एक अकेले
  4. भाग 3- एक रीस्ट एपीआई
  5. के साथ संचार करने के लिए टोडो सेवा अपडेट करें
  6. भाग 4- डेटा को सुलझाने के लिए कोनालर रूटर का उपयोग करें
  7. भाग 5- निजी सामग्री की सुरक्षा के लिए प्रमाणीकरण जोड़ें

विशेषज्ञ के नेतृत्व वाले ऑनलाइन कोणीय प्रशिक्षण पाठ्यक्रमों के लिए आप टोड मोटो द्वारा अंतिम कांटे के पीछे नहीं जा सकते। यहाँ उनके पाठ्यक्रमों का प्रयास करें , और कोड SITEPOINT_SPECIAL प्राप्त करने के लिए 50% बंद प्राप्त करें और सहायता करने के लिए साइटपॉइंट।


एक भाग में हमने सीख लिया कि कैसे हमारे टोडो एप्लिकेशन को ऊपर उठाना और चलाना और इसे सेमीलेट पेज पर लागू करना। यह सिर्फ ठीक काम किया है, लेकिन, दुर्भाग्य से, पूरे ऐप को एकल घटक में क्रमित किया गया था।

भाग 2 में हमने एक अधिक मॉड्यूलर घटक वास्तुकला की जांच की और यह पता लगाया कि इस एकल घटक को छोटे घटकों के संरचित वृक्ष में कैसे तोड़ना है जो समझना, पुन: उपयोग और बनाए रखने में आसान है।

भाग तीन में हमने आरएक्सजेएस और Semaltट एचटीटीपी सेवा का उपयोग करते हुए एक आरईएसटी एपीआई बैकएंड के साथ संवाद करने के लिए हमारे एप्लीकेशन को अपडेट किया है।

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

चिंता मत करो! आप नहीं इस भाग के एक, दो या तीन ट्यूटोरियल का पालन करने की आवश्यकता नहीं है, चार को समझने के लिए आप बस हमारे रेपो की एक कॉपी को पकड़ सकते हैं, कोड को तीन भाग से चेकआउट कर सकते हैं, और इसका इस्तेमाल शुरुआती बिंदु के रूप में कर सकते हैं। इसे नीचे और अधिक विवरण में समझाया गया है।

ऊपर और रनिंग

सुनिश्चित करें कि आपके पास Semalt्ट सीएलआई स्थापित करने का नवीनतम संस्करण है। यदि आप ऐसा नहीं करते हैं, तो आप इसे निम्न कमांड के साथ स्थापित कर सकते हैं:

     एनपीएम इंस्टॉल - जी @ कोणीय / क्ली @ नवीनतम    

यदि आपको सेमील्ट सीएलआई के पिछले संस्करण को निकालना है, तो आप निम्न कर सकते हैं:

     एनएमएम अनइंस्टॉल करें- g @ कोणीय / क्ली कोणीय-क्लीएनएमपी कैश साफnpm install -g @ कोणीय / क्ली @ नवीनतम    

Semalt्ट कि, आपको कोड की प्रति की आवश्यकता होगी भाग तीन से यह https: // github पर उपलब्ध है com / SitePoint-संपादक / कोणीय-कार्य करने की एप्लिकेशन के अंतर्गत। इस श्रृंखला के प्रत्येक आलेख में रिपॉजिटरी में एक समान टैग है ताकि आप आवेदन के विभिन्न राज्यों के बीच आगे और पीछे स्विच कर सकें।

वह कोड जिसे हमने भाग तीन में समाप्त कर दिया था और जिसे हम शुरू करते हैं इस लेख में भाग -3 के रूप में टैग किया गया है। कोड जिसके साथ हम इस लेख को समाप्त करते हैं उसे part-4 के रूप में टैग किया गया है।

आप टैग के बारे में सोच सकते हैं जैसे कथित एक विशिष्ट आईडी के लिए। आप जीआईटी चेकआउट का उपयोग करके उनके बीच स्विच कर सकते हैं। आप यहां पर और भी पढ़ सकते हैं।

तो, उठो और चलने के लिए (मिमल सीएलआई स्थापित करने का नवीनतम संस्करण) हम करेंगे:

     जीआईटी क्लोन गिट @ जीथूब कॉम: SitePoint-संपादक / कोणीय-कार्य करने की एप्लिकेशन के अंतर्गत। Gitसीडी कोणीय- todo-appजीआईटी चेकआउट भाग -3एनएमपी स्थापित करेंएनजी सेवा    

फिर http: // localhost: 4200 / पर जाएं अगर सब कुछ ठीक है, तो आपको काम करने वाले टोडो ऐप को देखना चाहिए।

एक त्वरित संक्षिप्त

भाग 3 के अंत में हमारी एप्लिकेशन वास्तुकला की तरह ये देखा गया है:

जावास्क्रिप्ट राउटर क्या है?

संक्षेप में, एक मिमल राउटर 2 चीजें करता है:

  1. जब ब्राउज़र यूआरएल बदल जाता है वेब आवेदन स्थिति को अद्यतन
  2. ब्राउजर यूआरएल को अद्यतन करें जब वेब एप्लीकेशन स्थिति बदल जाती है

जावास्क्रिप्ट रूटर हमारे लिए सिंगल पेज एप्लीकेशन (एसपीए) को विकसित करना संभव बनाता है।

एकल पृष्ठ मीलट एक वेब अनुप्रयोग है जो एक डेस्कटॉप एप्लिकेशन के समान उपयोगकर्ता अनुभव प्रदान करता है। एक एकल पृष्ठ मील में, पर्दे के पीछे एक बैक-एंड के साथ सभी संचार होता है

जब कोई उपयोगकर्ता एक पृष्ठ से दूसरे पर नेविगेट करता है, तो पृष्ठ को पुनः लोड किए बिना गतिशील रूप से अद्यतन किया जाता है, भले ही यूआरएल में परिवर्तन हो।

कई अलग-अलग शाम राऊटर लागूकरण उपलब्ध हैं।

इनमें से कुछ विशेष रूप से एक निश्चित जावास्क्रिप्ट फ़्रेमवर्क के लिए लिखे गए हैं जैसे अंगुलर, एम्बर, रिएक्ट, वू जेएस, ऑरिलिया, आदि। सैमलेट कार्यान्वयन सामान्य उद्देश्यों के लिए बनाए गए हैं और किसी विशिष्ट ढांचे से नहीं जुड़े हैं।

कोणीय रूटर क्या है?

कोणीय राउटर एक आधिकारिक कोनेर रूटिंग लाइब्रेरी है, जो कोंगल कोर टीम द्वारा लिखित और रखरखाव किया गया है।

यह एक जावास्क्रिप्ट राउटर कार्यान्वयन है जिसे कोनेरी के साथ काम करने के लिए डिज़ाइन किया गया है और इसे पैकेज के रूप में @ कोणीय / राउटर है।

सबसे पहले, कोणीय राउटर एक मिमल राउटर के कर्तव्यों का ध्यान रखता है:

  • जब कोई उपयोगकर्ता एक निश्चित यूआरएल
  • पर जाल करता है, तो यह पृष्ठ को तैयार करने के लिए सभी आवश्यक कोणीय घटकों को सक्रिय करता है
  • यह उपयोगकर्ताओं को पृष्ठ पुनः लोड किए बिना एक पृष्ठ से दूसरे पर नेविगेट करने देता है
  • यह ब्राउज़र के इतिहास को अपडेट करता है ताकि उपयोगकर्ता पीठ और आगे वाले बटन का उपयोग तब कर सकें जब पन्ने
  • के बीच आगे और पीछे नेविगेट किया जाए

इसके अतिरिक्त, मिमल राउटर हमें अनुमति देता है:

  • यूआरएल को एक और यूआरएल पर रीडायरेक्ट करें
  • एक पृष्ठ प्रदर्शित होने से पहले डेटा का समाधान करें
  • स्क्रिप्ट चलाएं जब कोई पृष्ठ सक्रिय या निष्क्रिय हो जाता है
  • हमारे आवेदन के आलसी लोड भागों

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

अगले लेख में, हम अपने आवेदन के लिए प्रमाणीकरण जोड़ देंगे और राउटर का उपयोग सुनिश्चित करेंगे ताकि सुनिश्चित हो सके कि उपयोगकर्ता के प्रवेश होने पर कुछ पृष्ठों का उपयोग किया जा सके।

कैसे कोणीय रूटर वर्क्स

हम कोड में घुसने से पहले, यह समझना महत्वपूर्ण है कि कैसे मिमल राउटर संचालित होता है और यह शब्दावली शुरू करता है. आप इन शब्दों के साथ धीरे-धीरे उन तरीकों से निपटेंगे क्योंकि आप इस श्रृंखला में धीरे-धीरे उनसे निपटेंगे और जैसे-जैसे आप मिमल राउटर के साथ और अधिक अनुभव प्राप्त करेंगे

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

Semalt राउटिंग प्रक्रिया में अधिक गहराई से देखने के लिए, मिमल राउटर नेविगेशन की 7-चरण राउटिंग प्रक्रिया को जांचना सुनिश्चित करें।

रूटिंग सक्षम करना

हमारे मिमल आवेदन में रूटिंग को सक्षम करने के लिए, हमें 3 चीजें करने की ज़रूरत है:

  1. एक रूटिंग कॉन्फ़िगरेशन बनाएं जो हमारे एप्लिकेशन के संभावित राज्यों को परिभाषित करता है
  2. हमारे एप्लिकेशन में रूटिंग कॉन्फ़िगरेशन आयात करें
  3. एक राउटर आउटलेट को जोड़ने के लिए एंजुलर राउटर को बताएं जहां डीओएम
  4. में सक्रिय घटकों को रखा जाए

तो आइए रूटिंग कॉन्फ़िगरेशन बनाकर शुरू करें।

रूटिंग कॉन्फ़िगरेशन बनाना

हमारी रूटिंग कॉन्फ़िगरेशन बनाने के लिए, हमें उन यूआरएल की एक सूची की आवश्यकता है, जो हम चाहते हैं कि हमारे आवेदन का समर्थन करें।

Semaltेट, हमारा आवेदन बहुत सरल है और केवल एक पेज है जो टूडो की एक सूची दिखाता है:

  • / : टूडो के शो सूची

जो हमारे आवेदन के होमपेज के रूप में टूडो की सूची दिखाएंगे।

हालांकि, जब अपने ब्राउजर में एक यूजर बुकमार्क्स / टूडओ की अपनी सूची से परामर्श करने के लिए और हम अपने मुखपृष्ठ की सामग्री (जो हम इस श्रृंखला के भाग 5 में करेंगे) को बदलते हैं, तो उनके बुकमार्क नहीं होगा लंबे समय से उनके todo की सूची दिखाने

तो आइए हम अपने टूडो की अपनी यूआरएल सूची में बताएं और हमारे होमपेज को इसे पुनर्निर्देशित करें:

  • / : पुनर्निर्देशित / टूडोस
  • / टूडोस : टूडो के शो सूची

इससे हमें दो लाभ मिलते हैं:

  • उपयोगकर्ता जब टोडोस पृष्ठ को बुकमार्क करते हैं, तो उनके ब्राउज़र / todos के बजाय / , जो अपेक्षित रूप से कार्य करते रहेंगे, भले ही हम मुख पृष्ठ सामग्री
  • अब हम आसानी से हमारे मुखपृष्ठ को किसी भी यूआरएल पर पुनर्निर्देशित करके बदल सकते हैं, जो सुविधाजनक है यदि आपको अपने होमपेज सामग्री को नियमित रूप से बदलना है

आधिकारिक कोणीय शैली गाइड एक फाइल में एक कोनेर मॉड्यूल के लिए रूटिंग कॉन्फ़िगरेशन को संचयित करने की सिफारिश करता है - रूटिंग में समाप्त होने वाले एक फ़ाइलनाम के साथ मॉड्यूल। टीएस जो अलग-अलग कोयरी मॉड्यूल का निर्यात करता है रूटिंग मोड्यूल में समाप्त होने वाले नाम के साथ।

हमारे वर्तमान मॉड्यूल AppModule कहा जाता है, इसलिए हम एक फाइल बनाते हैं src / app / app-routing मॉड्यूल। ts और हमारे रूटिंग कॉन्फ़िगरेशन को एक एन्ज्यूलर मॉड्यूल के रूप में नामित किया जाता है ऐपराउटिंग मॉड्यूल :

   'एंजियल / कोर' से आयात {एनएमएम्यूल};'कोणीय / रूटर' से आयात {रूटर मॉड्यूल, मार्ग};आयात करें {AppComponent} से ' / अनुप्रयोग। घटक ';const मार्गों: मार्ग = [{पथ: '',redirectTo: 'todos',पथ मैच: 'पूर्ण'},{पथ: 'todos',घटक: AppComponent}];@NgModule ({आयात: [रूटर मॉड्यूल forRoot (मार्गों)],निर्यात: [रूटर मॉड्यूल],प्रदाताओं: []})निर्यात वर्ग AppRouting मॉड्यूल {}    

पहले हम रूटर मॉड्यूल और रूट्स से @ कोणीय / राउटर :

आयात करते हैं
   आयातित करें {रूटर मॉड्यूल, मार्ग} '@ कोणीय / राउटर' से;    

अगला, हम एक चर मार्गों प्रकार राउट्स को परिभाषित करते हैं और इसे हमारे राउटर कॉन्फ़िगरेशन प्रदान करते हैं:

   स्थिर मार्ग: मार्ग = [{पथ: '',redirectTo: 'todos',पथ मैच: 'पूर्ण'},{पथ: 'todos',घटक: AppComponent}];    

मार्ग प्रकार वैकल्पिक है और टाइपस्क्रिप्ट समर्थन के साथ एक आईडीई देता है या टाइपस्क्रिप्ट कम्पाइलर विकास के दौरान आपके मार्ग कॉन्फ़िगरेशन को आसानी से मान्य करता है.

यह मार्गों का एक पेड़ है, जिसे मीमलेट सरणी के रूप में परिभाषित किया गया है, जहां प्रत्येक मार्ग में निम्न गुण हो सकते हैं:

  • पथ : स्ट्रिंग, URL से मिलान करने के लिए पथ
  • पैच मैच : स्ट्रिंग, कैसे यूआरएल
  • घटक : कक्षा संदर्भ, यह मार्ग सक्रिय होने पर सक्रिय करने के लिए घटक
  • रीडायरेक्ट : स्ट्रिंग, इस मार्ग को सक्रिय करने के लिए रीडायरेक्ट यूआरएल
  • डेटा : मार्ग को निर्दिष्ट करने के लिए स्थिर डेटा
  • संकल्प : हल करने के लिए गतिशील डेटा के साथ विलय जब हल
  • बच्चों : बाल मार्ग

हमारा आवेदन सरल है और इसमें केवल दो भाई मार्ग शामिल हैं, लेकिन एक बड़े आवेदन में बाल मार्गों जैसे रूटर कॉन्फ़िगरेशन हो सकते हैं जैसे:

   स्थिर मार्ग: मार्ग = [{पथ: '',redirectTo: 'todos',पथ मैच: 'पूर्ण'},{पथ: 'todos',बच्चे: [{पथ: '',घटक: 'टोडसपेजकंपोनेंट'},{पथ: ': आईडी',घटक: 'TodoPageComponent'}]}];    

जहां टूडोस के पास दो बाल मार्ग हैं और : आईडी एक मार्ग पैरामीटर है, जिससे राउटर को निम्न यूआरएल को पहचानने में सक्षम हो जाता है:

  • / : होमपेज पर रीडायरेक्ट / टूडोस
  • / टूडोस : सक्रिय करें टॉडपेज कम्पेनेन्ट और टोडो की सूची दिखाएं
  • / todos / 1 : सक्रिय करें टोडोपेजकंपोनेंट और निर्धारित मूल्य : आईडी पैरामीटर 1
  • / टूडोस / 2 : सक्रिय करें टोडोपेजकंपोनेंट और निर्धारित मूल्य : आईडी पैरामीटर 2

ध्यान दें कि हम कैसे निर्दिष्ट करते हैं पैच मैच: 'पूर्ण' रीडायरेक्ट को परिभाषित करते समय

शाम राऊटर की दो मिलान रणनीतियां हैं:

  • उपसर्ग : डिफ़ॉल्ट, जब URL के साथ शुरू होता है का मान पथ
  • पूर्ण : मैच जब यूआरएल बराबर का मान पथ

यदि हम निम्नलिखित मार्ग बनाते हैं:

   // कोई पथ मैच निर्दिष्ट नहीं है, इसलिए कोणीय राउटर लागू होता है// डिफ़ॉल्ट `उपसर्ग 'पथमैच{पथ: '',redirectTo: 'todos'}    

फिर कोणीय रूटर डिफ़ॉल्ट उपसर्ग पथ मिलान करने की रणनीति पर लागू होता है और प्रत्येक यूआरएल को टूडोस पर रीडायरेक्ट किया जाता है क्योंकि प्रत्येक यूआरएल से शुरू होता है खाली स्ट्रिंग ' में निर्दिष्ट पथ

हम चाहते हैं कि हमारे मुखपृष्ठ को टूडोस पर रीडायरेक्ट किया जाए, ताकि हम पथ मैच: 'फुल' को सुनिश्चित कर लें कि केवल यूआरएल बराबर रिक्त स्ट्रिंग '' मिलान है:

   {पथ: '',redirectTo: 'todos',पथ मैच: 'पूर्ण'}    

विभिन्न रूटिंग कॉन्फ़िगरेशन विकल्पों के बारे में अधिक जानने के लिए, रूटिंग और नेविगेशन पर आधिकारिक एंगल दस्तावेज देखें।

अंत में, हम एक एनालर मॉड्यूल बनाते हैं और निर्यात करते हैं ऐपराउटिंग मॉड्यूल :

   @ एनजी मॉड्यूल ({आयात: [रूटर मॉड्यूल forRoot (मार्गों)],निर्यात: [रूटर मॉड्यूल],प्रदाताओं: []})निर्यात वर्ग AppRouting मॉड्यूल {}    

राउटिंग मॉड्यूल बनाने के लिए दो तरीके हैं:

  1. रूटर मॉड्यूल के लिए रूट (मार्ग) : एक रूटिंग मॉड्यूल तैयार करता है जिसमें राउटर निर्देश, मार्ग कॉन्फ़िगरेशन और राउटर सेवा
  2. रूटर मॉड्यूल चाइल्ड (मार्ग) के लिए: रूटिंग मॉड्यूल तैयार करता है जिसमें रूटर निर्देश, मार्ग कॉन्फ़िगरेशन , लेकिन रूटर सेवा
  3. शामिल नहीं है

रूटर मॉड्यूल बच्चे के लिए विधि की आवश्यकता होती है जब आपके एप्लिकेशन में एकाधिक रूटिंग मोड्यूल होते हैं - отдaм крупную собaку. एकमात्र राउटर सेवाओं जो एक ही ब्राउज़र यूआरएल के साथ इंटरैक्ट करते हैं, उन मुद्दों को लेकर आती हैं, इसलिए यह आवश्यक है कि हमारे आवेदन में रूटर सर्विस का केवल एक उदाहरण है, चाहे कितना रूटिंग मोड्यूल हम अपने आवेदन में आयात करते हैं।

जब हम राउटर मॉड्यूल का उपयोग करते हुए रूटर मॉड्यूल का उपयोग करते हुए रूटिंग मॉड्यूल आयात करते हैं forRoot , कोणीय रूटर सेवा इन्स्तांत करेगा। जब हम राउटर मॉड्यूल रूटर मॉड्यूल का उपयोग करके बनाया गया रूटिंग मॉड्यूल आयात करते हैं चाइल्ड , कोणीय इच्छा नहीं राउटर सेवा इन्स्तांत

इसलिए हम केवल रूटर मॉड्यूल का उपयोग कर सकते हैं forRoot एक बार और उपयोग करें रूटर मॉड्यूल अतिरिक्त राउटिंग मॉड्यूल के लिए बाल कई बार

चूंकि हमारे एप्लिकेशन में केवल एक रूटिंग मॉड्यूल है, हम रूटर मॉड्यूल का उपयोग करते हैं। forRoot :

   आयात: [रूटर मॉड्यूल forRoot (मार्गों)]    

इसके अतिरिक्त, हम निर्यात संपत्ति में रूटर मॉड्यूल निर्दिष्ट करते हैं:

   निर्यात: [रूटर मॉड्यूल]    

यह सुनिश्चित करता है कि हमें स्पष्ट रूप से रूटर मॉड्यूल फिर से AppModule आयात करने की ज़रूरत नहीं है AppModule आयात AppRoutingModule

अब हमारे पास ऐपराउटिंग मॉड्यूल हैं, इसे सक्षम करने के लिए हमें इसे हमारे एपीएमडीयूडी में आयात करना होगा।

रूटिंग कॉन्फ़िगरेशन आयात करना

हमारे आवेदन में हमारे रूटिंग विन्यास को आयात करने के लिए, हमें AppRoutingModule को हमारे मुख्य AppModule में आयात करना होगा।

चलो खोलो src / app / app मॉड्यूल। एसएस और एक्सट्रैक्टिंग मॉड्यूल आयात करने के लिए ऐरे में AppModule @ एनजी मॉड्यूल मेटाडेटा:

   'कोणीय / प्लेटफ़ॉर्म-ब्राउज़र' से आयात {BrowserModule};'कोणाही / कोर' से आयात करें {एनएमएम्यूल};'एंजियल / फॉर्म' से आयात {फॉर्मस मॉड्यूल};आयात करें {HttpModule} से '@ कोणीय / एचपी';आयात करें {AppComponent} से ' / अनुप्रयोग। घटक ';आयात करें {TodoListComponent} से ' / कार्य करने की सूची / कार्य करने की सूची। घटक ';आयात करें {TodoListFooterComponent} से '। / कार्य करने की सूची-पाद लेख / कार्य करने की सूची-पाद लेख। घटक ';आयात करें {TodoListHeaderComponent} से ' / कार्य करने की सूची हेडर / कार्य करने की सूची हेडर। घटक ';आयात करें {TodoDataService} से ' / कार्यसूची-डेटा। सर्विस';आयात करें {TodoListItemComponent} से ' / कार्य करने की सूची आइटम / कार्य करने की सूची आइटम। घटक ';आयात करें {एपीआई सेवा} से ' / एपीआई। सर्विस';आयात करें {AppRoutingModule} से ' / एप्लिकेशन-मार्ग। मॉड्यूल ';@NgModule ({घोषणाएं: [AppComponent,TodoListComponent,TodoListFooterComponent,TodoListHeaderComponent,TodoListItemComponent],आयात: [AppRoutingModule,BrowserModule,FormsModule,HttpModule],प्रदाताओं: [TodoDataService, ApiService],बूटस्ट्रैप: [AppComponent]})निर्यात वर्ग AppModule {}    
एक्सट्रैक्टिंग मॉड्यूल रूटिंग मॉड्यूल अपने निर्यात संपत्ति में सूचीबद्ध है, कांगो आयात करेगा रूटिंग मॉड्यूल स्वचालित रूप से जब हम आयात करते हैं AppRouting मॉड्यूल 62), इसलिए हमें स्पष्ट रूप से रूटर मॉड्यूल आयात करने की ज़रूरत नहीं है (हालांकि ऐसा करने से कोई नुकसान नहीं होता)।

सममूल्य हम ब्राउज़र में हमारे परिवर्तनों की कोशिश कर सकते हैं, हमें तीसरे और अंतिम चरण को पूरा करने की आवश्यकता है।

एक राउटर आउटलेट जोड़ने

हालांकि हमारे आवेदन में अब एक रूटिंग कॉन्फ़िगरेशन है, हमें अब भी कोनेर राउटर को बताने की जरूरत है जहां यह DOM में तत्काल घटकों को रख सकता है।

जब हमारे एप्लीकेशन को बूटस्ट्रैप किया जाता है, तो कांगारू तत्काल AppComponent क्योंकि AppComponent बूटस्ट्रैप की संपत्ति AppModule में सूचीबद्ध है:

   @ एनजी मॉड्यूल ({//। ।.  

<राउटर-आउटलेट> तत्व कोनोर रूटर बताता है जहां यह डीओएम में घटकों को इन्स्तांत कर सकता है।

यदि आप परिचित अंगुल्यजीएस 1. एक्स रूटर और यूआई राऊटर हैं, तो आप <राउटर-आउटलेट> के कोण के विकल्प एनजी-दृश्य पर विचार कर सकते हैं और यू-व्यू

तत्व के बिना, कोण के रूटर को घटकों को कहां नहीं पता होगा और केवल AppComponent का अपना HTML प्रदान किया जाएगा ।

AppComponent वर्तमान में todo की एक सूची प्रदर्शित करता है <राउटर आउटलेट> को शामिल करने के लिए AppComponent की अनुमति देने के बजाय, हम अब AppComponent चाहते हैं, और कौगुलर रूटर को दूसरे घटक को इन्स्तांत करने के लिए बताएं AppComponent टूडो की सूची प्रदर्शित करने के लिए

इसे पूरा करने के लिए, आइए अब एक नया घटक टोडस कंबोनेंट को कोणीय सीएलआई का उपयोग करें:

     $ एनजी घटक टॉरोड उत्पन्न    

और सभी HTML को स्थानांतरित करें src / app / app घटक। html से src / app / todos / todos घटक। html :

   
<एप्लिकेशन-कार्य करने की सूची हेडर(जोड़ें) = "onAddTodo ($ घटना)"> <एप्लिकेशन-कार्य करने की सूची[सब] = "सब"(ToggleComplete) = "onToggleTodoComplete ($ घटना)"(निकालने के लिए) = "onRemoveTodo ($ घटना)"> <एप्लिकेशन-कार्य करने की सूची-पाद लेख[सब] = "सब">

और सभी तर्क src / app / app से घटक। ts से src / app / todos / todos। घटक। ts :

   / * src / app / todos / todos घटक। ts * /आयात करें {घटक, OnInit} 'angular / core' से;आयात करें {TodoDataService} से ' । / कार्यसूची-डेटा। सर्विस';आयात करें {टोडो} से ' । /करने के लिए';@Component ({चयनकर्ता: 'एप टूडो',templateUrl: '। / सब। घटक। html ',styleUrls: [' / सब। घटक। सीएसएस '],प्रदाताओं: [TodoDataService]})निर्यात वर्ग TodosComponent लागू करता है OnInit {todos: Todo [] = [];निर्माता (निजी todo डेटा सेवा: TodoDataService) {}सार्वजनिक एनजीऑनइंट    {इस। todoDataService। getAllTodos   । सदस्यता के ((todos) => {इस। todos = todos;});}ऑनएडटोडो (टूडू) {इस। todoDataService। addTodo (TODO)। सदस्यता के ((न्यूटोडो) => {इस। टूडोस = यह सब। concat (newTodo);});}onToggleTodoComplete (todo) {इस। todoDataService। toggleTodoComplete (TODO)। सदस्यता के ((अपडेट टोडो) => {todo = updatedTodo;});}onRemoveTodo (todo) {इस। todoDataService। deleteTodoById (TODO आईडी)। सदस्यता के ((_) => {इस। टूडोस = यह सब। फ़िल्टर ((टी) => टी। आईडी! == टूडू आईडी);});}}    

अब हम बदल सकते हैं AppComponent का टेम्पलेट src / app / app घटक। html के साथ:

   <रूटर आउटलेट>     

और सभी अप्रचलित कोड से AppComponent के वर्ग src / app / app से हटा दें घटक। ts :

   'एंजियल / कोर' से आयात {घटक};@Component ({चयनकर्ता: 'ऐप-रूट',templateUrl: '। / अनुप्रयोग। घटक। html ',styleUrls: [' / अनुप्रयोग। घटक। सीएसएस '],})निर्यात वर्ग AppComponent {}    

अंत में, हम todos मार्ग src / app / app-routing में अपडेट करते हैं। मॉड्यूल.

साम्बाल्ट ब्राउज़र में हमारे परिवर्तनों का प्रयास करें।

अपने डेवलपमेंट सर्वर और अपने बैकएंड एएमआई चलाकर चलाना:

     $ एनजी सेवा$ एनपीएम रन जेसन-सर्वर    

और अपने ब्राउज़र को नेविगेट करें http: // localhost: 4200

कोणीय राउटर राउटर कॉन्फ़िगरेशन पढ़ता है और स्वचालित रूप से हमारे ब्राउज़र को पुनर्निर्देशित करता है http: // localhost: 4200 / todos

यदि आप पृष्ठ पर मौजूद तत्वों का निरीक्षण करते हैं, तो आप देखेंगे कि टॉडसमुंनेंट के अंदर नहीं दिया गया है, लेकिन इसके ठीक अगले यह:

   <रूटर-आउटलेट> <एप्लिकेशन-सब>     

हमारे आवेदन में अब रूटिंग सक्षम है। बहुत बढ़िया!

एक वाइल्डकार्ड मार्ग जोड़ना

जब आप अपने ब्राउज़र को नेविगेट करते हैं http: // localhost: 4200 / unmatched-url , और आप अपने ब्राउज़र के डेवलपर उपकरण को खोलते हैं, तो आप देखेंगे कि कांगार रूटर कंसोल में निम्न त्रुटि लॉग करता है:

   त्रुटि: किसी भी मार्ग से मिलान नहीं किया जा सकता यूआरएल सेगमेंट: 'बेजोड़-यूआरएल'    

बेजोड़ Semaltेट को संभाल करने के लिए हमें दो चीजों की ज़रूरत है:

  1. बनाएँ PageNotFoundComponent (यदि आप चाहें तो इसे अलग तरह से नाम दे सकते हैं) एक दोस्ताना संदेश प्रदर्शित करने के लिए कि अनुरोधित पृष्ठ नहीं मिला
  2. पृष्ठ नॉटफॉउड कंटनेन्ट को दिखाने के लिए कोणीय रूटर बताएं जब कोई रूट अनुरोधित यूआरएल
  3. से मेल नहीं खाता

आइए पृष्ठ नॉटफॉइड कम्पेनेन्ट को सन्निकुल सीएलआई का उपयोग करके शुरू करें:

     $ एनजी घटक GenerateNotFound    

और अपने टेम्पलेट को संपादित करें src / app / page-not-found / page-not-found। घटक। html :

    

हमें खेद है, अनुरोधित पृष्ठ नहीं मिला।

अगला, हम एक वाइल्डकार्ड मार्ग ** का उपयोग करके पथ के रूप में जोड़ते हैं:

   स्थिर मार्ग: मार्ग = [{पथ: '',redirectTo: 'todos',पथ मैच: 'पूर्ण'},{पथ: 'todos',घटक: AppComponent},{पथ: '**',घटक: PageNotFoundComponent}];    

** बाल पथ सहित किसी भी URL से मेल खाता है।

अब, यदि आप अपने ब्राउज़र को नेविगेट करने के लिए http: // localhost: 4200 / बेमेल- url , PageNotFoundComponent प्रदर्शित होते हैं।

Semalt्ट कि वाइल्डकार्ड मार्ग को हमारे रूटिंग कॉन्फ़िगरेशन में अपेक्षित के रूप में कार्य करने के लिए अंतिम मार्ग होना चाहिए।

जब राउटर कॉन्फ़िगरेशन के लिए मिमल राउटर एक अनुरोध यूआरएल से मेल खाता होता है, तो इसे प्रसंस्करण रोकता है जैसे ही उसे पहला मैच मिलता है

इसलिए यदि हम मार्गों के क्रम को बदलना चाहते थे:

   स्थिर मार्ग: मार्ग = [{पथ: '',redirectTo: 'todos',पथ मैच: 'पूर्ण'},{पथ: '**',घटक: PageNotFoundComponent},{पथ: 'todos',घटक: AppComponent}];    

तब टूडोस कभी भी नहीं पहुंचे और पृष्ठ नॉटफॉउड कॉम्पोनेंट प्रदर्शित किए जाएंगे क्योंकि वाइल्डकार्ड मार्ग का मिलान पहले किया जाएगा।

हमने पहले ही बहुत कुछ किया है, तो हम जल्द से जल्द जो कुछ हासिल किया है, उसे दोबारा बताएं:

  • हमने कोणीय रूटर स्थापित किया
  • हमने हमारे आवेदन के लिए रूटिंग कॉन्फ़िगरेशन बनाया
  • हमने पुनर्परिभाषित AppComponent से TodosComponent
  • हमने जोड़ा <रूटर-आउटलेट> से AppComponent के टेम्पलेट
  • हम बेजोड़ यूआरएल को सुन्दर तरीके से संभालने के लिए एक वाइल्डकार्ड मार्ग जोड़ा

अगला, हम मौजूदा रीडर को हमारे बैकेंड एपीआई से मिमल राउटर का उपयोग करने के लिए एक रिज़ॉल्वर बनाएंगे.

वर्तमान में, जब हम todos यूआरएल पर हमारे ब्राउज़र को नेविगेट करते हैं, तो निम्न होता है:

  1. कोणीय राउटर टूडोस यूआरएल
  2. से मेल खाता है
  3. कोणीय राउटर सक्रिय करता है टॉडसमुन्नेन्ट
  4. एन्ज्युलर राउटर डीओएम
  5. में के पास टोडस कॉम्पेनेन्ट
  6. टोडस कॉमपोन्नेन्ट ब्राउज़र में प्रदर्शित होता है, जिसमें एक खाली सारणी
  7. टोडो के एनजीओएनआईआईटीआईटी में एपीआई से प्राप्त किए जाते हैं टोडस कॉम्पेनेंट
  8. टोडस कंबोनेंट को ब्राउज़र में अपडेट किया गया है जो एडीआई

अगर चरण 5 में पदोन्नति को लोड करना 3 सेकंड लेता है, तो उपयोगकर्ता को चरण 6 में प्रदर्शित होने से पहले 3 सेकंड के लिए एक खाली सूची के साथ प्रस्तुत किया जाएगा।

यदि टोडस कंबोनेंट को अपने टेम्पलेट में निम्नलिखित HTML होना था:

   
वर्तमान में आपके पास अभी तक कोई कार्यवाही नहीं है

तो उपयोगकर्ता को यह संदेश वास्तविक टोडो प्रदर्शित होने से पहले 3 सेकंड के लिए देखेगा, जो उपयोगकर्ता को पूरी तरह से गुमराह कर सकता है और वास्तविक डेटा आने से पहले उपयोगकर्ता को नेविगेट कर सकता है।

हम एक लोडर जोड़ सकते हैं TodosComponent जो एक स्पिनर को दिखाता है जबकि डेटा लोड किया जा रहा है, लेकिन कभी-कभी हम वास्तविक घटक पर नियंत्रण नहीं रख सकते हैं, उदाहरण के लिए जब हम किसी तीसरे पक्ष के घटक का उपयोग करते हैं

इस अवांछित व्यवहार को ठीक करने के लिए, हमें निम्नलिखित होने की आवश्यकता है:

  1. कोणीय राउटर टूडोस यूआरएल
  2. से मेल खाता है
  3. कोणीय रूटर एडीआई (TODO) से एडीआई
  4. कोणीय राउटर सक्रिय करता है टॉडसमुन्नेन्ट
  5. एन्ज्युलर राउटर डीओएम
  6. में के पास टोडस कॉम्पेनेन्ट
  7. टोडस कंबोनेंट ब्राउजर में प्रदर्शित किया जाता है जो एडीआई

जहां TodosComponent प्रदर्शित नहीं किया जाता है जब तक कि हमारे एपीआई बैकएण्ड से डेटा उपलब्ध नहीं होता है।

यह ठीक है कि एक रिज़ॉल्टर हमारे लिए क्या कर सकता है।

कोड्यूलर रूटर टोडस कॉम्पेनेंट को सक्रिय करने से पहले कोयू का रूटर तय करने के लिए, हमें दो चीजों को करना चाहिए:

  1. एक TodosResolver बनाएँ जो कि एडीआई (TODO) से एडीआई
  2. टूडस मार्ग में टोडस कॉमपोन्नेन्ट को सक्रिय करते समय
  3. का उपयोग करने के लिए कोनेस रेसनॉल्वर का उपयोग करने के लिए कोयोनर राउटर को बताएं।

टूडोस रूट के लिए एक रिज़ॉल्वर को जोड़कर हम डेटा को हल करने के लिए कोनालर रूटर पूछते हैं, पहले टोडसकॉम्पोनेंट सक्रिय है।

तो आइए हमारे टॉडो की प्राप्ति के लिए एक रिज़ॉल्वर बनाएं।

टोडोसरसोलर बनाना

कोणीय सीएलआई में एक रिज़ॉल्टर उत्पन्न करने का कोई आदे

March 1, 2018