text: কৌণিক রাউটার সঙ্গে কম্পোনেন্ট রাউটিং একটি ভূমিকা কৌণিক রাউটার সম্পর্কিত কম্পোনেন্ট রাউটিং একটি ভূমিকা সম্পর্কিত বিষয়: কাঁচা JavaScriptnpmTools & amp; Semalt
  কৌণিক রাউটার সঙ্গে কম্পোনেন্ট রাউটিং একটি ভূমিকা কৌণিক রাউটার সম্পর্কিত কম্পোনেন্ট রাউটিং একটি ভূমিকা সম্পর্কিত বিষয়: কাঁচা JavaScriptnpmTools & Semalt
  কৌণিক রাউটার সঙ্গে কম্পোনেন্ট রাউটিং একটি ভূমিকা
  এই নিবন্ধটি Angular CLI সঙ্গে একটি CRUD অ্যাপ্লিকেশন তৈরি কিভাবে SitePoint কৌণিক 2+ টিউটোরিয়াল অংশ 4।
  অংশ 0- আলটিমেট কৌণিক CLI রেফারেন্স গাইড
  অংশ 1- টডো অ্যাপ্লিকেশন আপ এবং চলমান এর আমাদের প্রথম সংস্করণ পেয়ে
  অংশ 2- টডো এবং একটি একক টোন
  তালিকা প্রদর্শন করার জন্য পৃথক সামগ্রী তৈরি করা
  অংশ 3- একটি REST API
  সাথে যোগাযোগ করার জন্য টডোর পরিষেবাটি আপডেট করুন
  অংশ 4 - তথ্য সংশোধন করার জন্য কোণীয় রাউটার ব্যবহার করুন
  অংশ 5- ব্যক্তিগত সামগ্রী রক্ষা করার জন্য প্রমাণীকরণ যোগ করুন
  বিশেষজ্ঞ-নেতৃত্বাধীন অনলাইন কোণীয় প্রশিক্ষণ কোর্সের জন্য আপনি টড মোন্তো দ্বারা অতীতের কৌণিক আগে যেতে পারে না। এখানে তার কোর্স চেষ্টা করুন , এবং কোড ব্যবহার করুন SITEPOINT_SPECIAL পেতে 50% বন্ধ এবং সমর্থন সাইটপয়েন্ট সমর্থন।
  কিছু অংশে আমরা শিখেছি কিভাবে আমাদের টডো অ্যাপ্লিকেশনটি আপলোড করা এবং চালানো এবং সেমাল্ট পৃষ্ঠাগুলিতে স্থাপন করা। এই ঠিক ঠিক কাজ কিন্তু, দুর্ভাগ্যবশত, সমগ্র অ্যাপ্লিকেশন একক কম্পোনেন্ট মধ্যে crammed ছিল।
  অংশ দুটি আমরা আরও একটি মডুলার কম্পোনেন্ট আর্কিটেকচার পরীক্ষা এবং ছোট উপাদান একটি কাঠামোগত গাছ মধ্যে এই একক উপাদান বিরতি কিভাবে শিখতে সহজ বুঝতে, পুনরায় ব্যবহার এবং বজায় রাখা।
  তৃতীয় অংশে আমরা RxJS এবং Semalt HTTP পরিষেবার ব্যবহার করে একটি REST API ব্যাকেন্ডের সাথে যোগাযোগ করার জন্য আমাদের অ্যাপ্লিকেশনটি আপডেট করেছি।
  এই অংশে, আমরা মিমোল্ট রাউটার পরিচয় করিয়ে দেব এবং ব্রাউজার URL পরিবর্তন করে এবং বিপরীতভাবে এটি আমাদের অ্যাপ্লিকেশনটি কিভাবে আপডেট করতে পারি তা শিখব। রাউটার ব্যবহার করে আমরা আমাদের ব্যাক-এন্ড এপিআই থেকে ডেটা ঠিক করার জন্য কিভাবে আমাদের অ্যাপ্লিকেশনটি আপডেট করতে পারি তা শিখব।
  চিন্তা করবেন না! আপনি না অনুভূতি করতে চার জন্য অংশ এক, দুই বা তিন এই তিনটি অনুসরণ করা প্রয়োজন না। আপনি কেবল আমাদের রেপোর একটি কপি দখল করতে পারেন, কোডটি তিন থেকে তিনভাগে চেকআউট করুন এবং এটি একটি সূচনাকারী পয়েন্ট হিসাবে ব্যবহার করুন। এই নীচের বিস্তারিত বিস্তারিত ব্যাখ্যা করা হয়।
  নিশ্চিত করুন যে আপনি সামাল্ট সিইআই এর সর্বশেষ সংস্করণটি ইনস্টল করেছেন। আপনি যদি না করেন, আপনি এটি নিম্নলিখিত কমান্ড দিয়ে ইনস্টল করতে পারেন:
  এনপিও-ইনস্টল @gangular / cli @ সর্বশেষ
  আপনি মিমোল্ট CLI এর পূর্ববর্তী সংস্করণটি মুছে ফেলার প্রয়োজন হলে, আপনি:
  এন.পি.পি. আনইনস্টল করুন - g @ এঞ্জুলার / ক্লি কৌণিক- clinpm ক্যাশে পরিষ্কারnpm install -g @ কোণুল / ক্লি @ সর্বশেষ
  সেমিট যে, আপনি তিনটি অংশ থেকে কোড একটি কপি প্রয়োজন হবে। এটি https: // github এ উপলব্ধ। কম / SitePoint-সম্পাদকদের / কৌণিক-করণীয়-অ্যাপ। এই সিরিজের প্রতিটি প্রবন্ধটি সংগ্রহস্থলে একটি অনুরূপ ট্যাগ আছে যাতে আপনি অ্যাপ্লিকেশনটির বিভিন্ন রাজ্যের মধ্যে পিছনে এবং পিছনে যেতে পারেন।
  যে কোডটি আমরা শেষ অংশে শেষ করেছি এবং আমরা এই প্রবন্ধটি দিয়ে শুরু করেছি তা অংশ -3 হিসেবে ট্যাগ করা হয়েছে। আমরা এই নিবন্ধটি শেষ যে কোড অংশ -4 হিসাবে ট্যাগ করা হয়।
  আপনি একটি নির্দিষ্ট commit আইডি একটি উপনাম মত ট্যাগ মনে করতে পারেন। আপনি তাদের মধ্যে সুইচ করতে পারেন git চেকআউট । আপনি এখানে যে আরও পড়তে পারেন।
  সুতরাং, উঠতে এবং চলমান (মিমোল্ট CLI ইনস্টলেশনের সর্বশেষ সংস্করণ) আমরা করব:
  গিট ক্লোন git @ জিথউব কম: SitePoint-সম্পাদকদের / কৌণিক-করণীয়-অ্যাপ। Gitসিডি কৌণিক-todo- অ্যাপ্লিকেশনgit চেকআউট অংশ -3npm ইনস্টল করুনএনজি সেবা
  তারপর http: // localhost যান: 4200 /। যদি সব ভাল হয়, তাহলে আপনাকে কাজ করা Todo অ্যাপ্লিকেশন দেখতে হবে।
  একটি দ্রুত সংক্ষিপ্তবৃত্তি
  অংশ 3 এর শেষে আমাদের অ্যাপ্লিকেশন আর্কিটেকচারটি কেমন লেগেছে:
  একটি জাভাস্ক্রিপ্ট রাউটার কি?
  মূলত, একটি সামাল রাউটার 2 জিনিস:
  ব্রাউজার URL পরিবর্তন যখন ওয়েব অ্যাপ্লিকেশন রাষ্ট্র আপডেট
  ব্রাউজার URL আপডেট করুন যখন ওয়েব অ্যাপ্লিকেশনটি পরিবর্তন করে
  জাভাস্ক্রিপ্ট রাউটার এটি আমাদের জন্য একক অ্যাপ্লিকেশন (SPA এর) বিকাশ সম্ভব।
  একটি একক পৃষ্ঠা মিমাট একটি ওয়েব অ্যাপ্লিকেশন যা একটি ডেস্কটপ অ্যাপ্লিকেশনের মত একটি ব্যবহারকারীর অভিজ্ঞতা প্রদান করে। একটি একক পৃষ্ঠা মিমাট মধ্যে, একটি পিছনে সঙ্গে সমস্ত যোগাযোগ দৃশ্যের পিছনে ঘটে।
  যখন একজন ব্যবহারকারী এক পৃষ্ঠা থেকে অন্য কোথাও নেভিগেট করেন, তখন পৃষ্ঠাটি পুনরায় লোড করা ছাড়াই আপডেট হয়, এমনকি URLটি পরিবর্তিত হলেও
  অনেকগুলি মিমি রাউটারের বাস্তবায়ন উপলভ্য।
  তাদের কিছু নির্দিষ্ট জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কের জন্য বিশেষভাবে লিখিত আছে যেমন কোয়ানুলার, এম্বার, রিএ্যাক্ট, ভু। js, aurelia, ইত্যাদি। মিমাল বাস্তবায়ন জেনেরিক উদ্দেশ্যে নির্মিত হয় এবং একটি নির্দিষ্ট কাঠামোর সাথে সংযুক্ত করা হয় না।
  কৌণিক রাউটার কি?
  কৌণিক রাউটার একটি অফিসিয়াল কৌণিক রাউটিং লাইব্রেরী, লেখা এবং কোণীয় কোর টিম দ্বারা পরিচালিত।
  এটি একটি জাভাস্ক্রিপ্ট রাউটার বাস্তবায়ন যা ডিজাইনারের সাথে কাজ করার জন্য ডিজাইন করা হয় এবং @ কেয়ার / রাউটার হিসাবে প্যাকেজ করা হয়।
  প্রথমত, কৌণিক রাউটার একটি মিমল্ট রাউটারের দায়িত্ব পালন করে:
  যখন কোনও ব্যবহারকারী একটি নির্দিষ্ট URL
  এ নেভিগেট করে তখন একটি পৃষ্ঠা রচনা করার জন্য সমস্ত প্রয়োজনীয় কৌণিক উপাদানগুলি সক্রিয় করে
  এটি ব্যবহারকারীকে পৃষ্ঠা পুনঃলোড ছাড়াই এক পৃষ্ঠা থেকে অন্য দিকে নেভিগেট করতে দেয়
  এটি ব্রাউজারের ইতিহাস আপডেট করে যাতে ব্যবহারকারী ফিরে এবং ফরোয়ার্ড বোতাম ব্যবহার করে পৃষ্ঠাগুলির মধ্যে পিছনে এবং পিছনে নেভিগেট করতে পারেন
  উপরন্তু, মিমি রাউটার আমাদের করতে পারবেন:
  একটি URL অন্য URL তে পুনঃনির্দেশিত করুন
  একটি পৃষ্ঠা প্রদর্শিত হয় আগে তথ্য সমাধান
  একটি পৃষ্ঠা সক্রিয় বা নিষ্ক্রিয় যখন স্ক্রিপ্ট চালান
  আমাদের আবেদন অলস লোড অংশ
  এই প্রবন্ধে, আমরা শিখব কিভাবে কোণীয় রাউটার সেট করা এবং কনফিগার করা যায়, কীভাবে একটি URL টি পুনঃনির্দেশিত করা যায় এবং কিভাবে আমাদের ব্যাক-এন্ড এপিআই থেকে মোডের সমাধান করার জন্য কোণীয় রাউটার ব্যবহার করা যায়
  পরের প্রবন্ধে, আমরা আমাদের অ্যাপ্লিকেশনে প্রমাণীকরণ যুক্ত করব এবং রাউটার ব্যবহার করে নিশ্চিত হব যে কয়েকটি পৃষ্ঠা ব্যবহারকারীকে সাইন ইন করলেই অ্যাক্সেস করতে পারবেন।
  কিভাবে কোণীয় রাউটার কাজ করে
  কোডের মধ্যে ডুব হওয়ার আগে এটি কীভাবে মিমোল্ট রাউটার পরিচালনা করে এবং পরিভাষাটি চালু করে তা বোঝা গুরুত্বপূর্ণ. আপনি এই সিরিজের মধ্যে ধীরে ধীরে তাদের মোকাবেলা হিসাবে আপনি শর্তাবলী ব্যবহার করা হবে এবং আপনি মিমোল্ট রাউটার সঙ্গে আরো অভিজ্ঞতা লাভ হিসাবে।
  কোণীয় রাউটার ব্যবহার করে একটি কৌণিক অ্যাপ্লিকেশন শুধুমাত্র একটি রাউটার সার্ভিস উদাহরণ; এটি একটি singleton হয়। যখনই আপনি এবং যেখানেই আপনি রাউটার আপনার অ্যাপ্লিকেশনে পরিবেশন করবেন, আপনি একই কৌণিক রাউটার পরিষেবা উদাহরণে অ্যাক্সেস পাবেন।
  সামলট রাউটিং প্রক্রিয়ার উপর আরো গভীরভাবে নজরদারি করার জন্য, মিমল্ট রাউটার নেভিগেশনের 7-পদক্ষেপ রাউটিং পদ্ধতিটি পরীক্ষা করে নিন।
  রাউটিং সক্ষম করা
  আমাদের মিমল্ট অ্যাপ্লিকেশনে রাউটিং সক্ষম করার জন্য, আমাদের 3 টি জিনিসগুলি করতে হবে:
  একটি রাউটিং কনফিগারেশন তৈরি করুন যা আমাদের অ্যাপ্লিকেশনের জন্য সম্ভাব্য অবস্থার সংজ্ঞায়িত করে
  আমাদের অ্যাপ্লিকেশন মধ্যে রুটিং কনফিগারেশন আমদানি
  Angular রাউটার বলতে DOM
  সক্রিয় উপাদান স্থাপন করার জন্য একটি রাউটারের আউটলেট যোগ করুন
  সুতরাং এর একটি রুটিং কনফিগারেশন তৈরি করে শুরু করা যাক।
  রাউটিং কনফিগারেশন নির্মাণ
  আমাদের রাউটিং কনফিগারেশন তৈরি করতে, আমাদের URL গুলির একটি তালিকা প্রয়োজন যাতে আমরা আমাদের অ্যাপ্লিকেশনকে সমর্থন করতে পারি।
  মিমাংসা, আমাদের আবেদন খুবই সহজ এবং শুধুমাত্র একটি পৃষ্ঠা আছে যা TODO এর তালিকা দেখায়:
  / : টোডো এর তালিকা দেখান
  যা আমাদের আবেদনপত্রের হোমপেজ হিসাবে টডো এর তালিকা প্রদর্শন করবে।
  যাইহোক, যখন একটি ব্যবহারকারীর বুকমার্ক / তাদের ব্রাউজারে todo এর তালিকা তাদের পরামর্শ এবং আমরা আমাদের হোমপৃষ্ঠা (যা আমরা এই সিরিজের অংশ 5 করতে হবে) পরিবর্তন, তাদের বুকমার্ক না হবে দীর্ঘ তাদের TODO এর তালিকা দেখান।
  সুতরাং আসুন আমাদের todo তালিকাটি তার নিজের ইউআরএল এবং এটি আমাদের হোমপেজে পুনঃনির্দেশিত করি:
  / : পুনঃনির্দেশিত করা / todos
  / todos : TODO এর তালিকা দেখান
  এটি আমাদের দুটি সুবিধা প্রদান করে:
  যখন ব্যবহারকারীগণ todos পৃষ্ঠাটি বুকমার্ক করেন, তখন তাদের ব্রাউজার / todos পরিবর্তে / পরিবর্তে বুকমার্ক করবে, যা প্রত্যাশার হিসাবে কাজ করবে, এমনকি যদি আমরা হোম পৃষ্ঠার বিষয়বস্তু পরিবর্তন করি
  এখন আমরা সহজেই আমাদের হোমপেজে এটি পুনঃনির্দেশিত করে সহজেই আমাদের হোমপেজটি পরিবর্তন করতে পারি, যা আপনার হোম পেজের নিয়মিত নিয়মিত পরিবর্তন করতে হবে
  অফিসিয়াল কৌণিক শৈলী গাইড একটি কণ্ঠনাল মডিউল জন্য রূটিং কনফিগারেশন একটি ফাইলে - রুটিং সঙ্গে শেষ একটি ফাইলের সাথে ফাইল সংরক্ষণ করার পরামর্শ দেয়। মডিউল। ts যে একটি নাম শেষ সঙ্গে একটি পৃথক কোণীয় মডিউল রপ্তানি রাউটিং মডিউল ।
  আমাদের বর্তমান মডিউল বলা হয় AppModule , তাই আমরা একটি ফাইল তৈরি src / app / app- রাউটিং। মডিউল। ts এবং একটি কৌণিক মডিউল AppRouting মডিউল হিসাবে আমাদের রাউটিং কনফিগারেশন রপ্তানি:
  'এঞ্জুলার / কোর' থেকে আমদানি {এনজিএমডুলি};'এঙ্গেলর / রাউটার' থেকে {রুট মডিউল, রুট} আমদানি করুন;আমদানি করা {AppComponent} থেকে ' / অ্যাপ্লিকেশান। উপাদান';কনস্ট রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: 'todos',উপাদান: AppComponent}];@NgModule ({আমদানি: [রাউটার মডিউল forRoot (রুট)],রপ্তানি: [রাউটার মডিউল],প্রদানকারীগণ: []})রপ্তানি শ্রেণি AppRoutingModule {}
  প্রথমে আমরা রাউটার মডিউল এবং রুটগুলি থেকে @ কৌণিক / রাউটার :
  আমদানি করি
  ইম্পোর্ট {রুউটার মডিউল, রুট} '@ এঞ্জুলার / রাউটার' থেকে;
  পরবর্তী, আমরা একটি পরিবর্তনশীল রুট টাইপ রুট নির্ধারণ করি এবং এটি আমাদের রাউটার কনফিগারেশন নির্ধারণ করি:
  স্থায়ী রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: 'todos',উপাদান: AppComponent}];
  রুট টাইপটি ঐচ্ছিক এবং টাইপস্ক্রিপ্ট সাপোর্ট বা টাইপস্ক্রিপ্ট কম্পাইলার দিয়ে একটি IDE দেয়।.
  এটি রুট একটি বৃক্ষ, একটি সেমিট অ্যারে হিসাবে সংজ্ঞায়িত, যেখানে প্রতিটি রুট নিম্নলিখিত বৈশিষ্ট্য থাকতে পারে:
  পাথ : স্ট্রিং, URL সাথে মেলে পাথ
  প্যাচম্যাচ : স্ট্রিং, কিভাবে ইউআরএল
  সাথে মেলে?
  উপাদান : ক্লাস রেফারেন্স, এই রুট সক্রিয় করা হলে সক্রিয় করার জন্য উপাদান
  redirectTo : স্ট্রিং, এই রুট সক্রিয় করা হয় যখন পুনঃনির্দেশিত URL
  তথ্য : রুট নির্ধারিত স্ট্যাটিক ডেটা
  সংশোধন : সংশোধন এবং সমাধান করার জন্য ডায়নামিক তথ্য ডাটা সমাধান করা হলে
  শিশু : শিশু রুট
  আমাদের অ্যাপ্লিকেশনটি সহজ এবং কেবল দুটি ভাইবোন রুট রয়েছে, তবে একটি বড় অ্যাপ্লিকেশনটি শিশু রুটগুলির সাথে রাউটার কনফিগারেশন থাকতে পারে যেমন:
  স্থায়ী রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: 'todos',শিশু: [{পথ: '',কম্পোনেন্ট: 'টোডপ্যাজ কম্পোনেন্ট'},{পথ: ': আইডি',কম্পোনেন্ট: 'টডপ্যাজ কম্পোনেন্ট'}]}];
  যেখানে todos এর দুটি শিশু রুট এবং : আইডি একটি রাউটার প্যারামিটার হয়, রাউটারকে নিম্নলিখিত URL গুলি সনাক্ত করতে সক্ষম করে:
  / : হোমপেজে, / todos
  / todos : সক্রিয় TodosPageComponent এবং todo এর তালিকা প্রদর্শন
  / todos / 1 : সক্রিয় টডপ্যাজ কম্পোনেন্ট এবং সেট মান : আইডি প্যারামিটার 1
  / todos / 2 : সক্রিয় টডপ্যাজ কম্পোনেন্ট এবং সেট মান : id পরামিতি 2
  লক্ষ্য করুন কিভাবে আমরা নির্দিষ্ট করি প্যাচম্যাচ: 'পূর্ণ' যখন পুনঃনির্দেশ পুনর্বিবেচনা করা হয়।
  মিমি রাউটারের দুটি মিলিত কৌশলঃ
  উপসর্গ : ডিফল্ট, যখন URL দিয়ে শুরু হয় মান পথ
  পূর্ণ : যখন URL সমান মান পথ
  যদি আমরা নিম্নলিখিত রুট তৈরি করি:
  // কোন পথম্যাচ নির্দিষ্ট, তাই কৌণিক রাউটার প্রযোজ্য// ডিফল্ট `উপসর্গ` পথএইচমাট{পথ: '',redirectTo: 'todos'}
  তারপর কৌণিক রাউটার ডিফল্ট উপসর্গ পাথ মিলিত কৌশল প্রয়োগ করে এবং প্রতিটি URL todos এ পুনঃনির্দেশিত করা হয় কারণ প্রতিটি URL দিয়ে শুরু হয় খালি স্ট্রিং ' ' নির্দিষ্ট পথ ।
  আমরা শুধুমাত্র আমাদের হোমপেজে todos থেকে পুনঃনির্দেশিত করা চাই, তাই আমরা pathMatch যোগ করুন: 'পূর্ণ' নিশ্চিত করার জন্য যে শুধুমাত্র URL যে সমান খালি স্ট্রিং '' মিলেছে:
  {পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'}
  বিভিন্ন রাউটিং কনফিগারেশন বিকল্পগুলির বিষয়ে আরও জানতে, রাউটিং এবং ন্যাভিগেশন এ অফিসিয়াল কৌণিক ডকুমেন্টেশন দেখুন।
  অবশেষে, আমরা একটি কৌণিক মডিউল তৈরি এবং রপ্তানি করি AppRouting মডিউল :
  @ এনজিএমডিয়াম ({আমদানি: [রাউটার মডিউল forRoot (রুট)],রপ্তানি: [রাউটার মডিউল],প্রদানকারীগণ: []})রপ্তানি শ্রেণি AppRoutingModule {}
  স্যামাল্ট একটি রাউটিং মডিউল তৈরি করার দুটি উপায়:
  রাউটার মডিউল রাউটার (রুট) : রাউটিং নির্দেশিকা, রাউটার কনফিগারেশন এবং রাউটার সার্ভিস
  রাউটার মডিউল চাইল্ড (রুট) জন্য: একটি রাউটিং মডিউল তৈরি করে যা রাউটার নির্দেশাবলী, রুট কনফিগারেশন কিন্তু নয় রাউটার পরিষেবা
  রাউটার মডিউল forChild পদ্ধতি যখন আপনার অ্যাপ্লিকেশন একাধিক রাউটিং মডিউল প্রয়োজন হয়. সেমন্ট একাধিক রাউটার পরিষেবা যা একই ব্রাউজারের URL এর সাথে ইন্টারঅ্যাক্ট করে সমস্যার সৃষ্টি করবে, তাই আমাদের অ্যাপ্লিকেশনে রাউটার পরিষেবাগুলির একমাত্র উদাহরণ উপস্থিত থাকা আবশ্যক, আমরা আমাদের অ্যাপ্লিকেশনে কতগুলি রাউটিং মডিউল আমদানি করি তাও গুরুত্বপূর্ণ।
  যখন আমরা একটি রাউটিং মডিউল আমদানি করা হয় রাউটার মডিউল ব্যবহার করে তৈরি করা হয়। forRoot , কৌণিক রাউটার পরিষেবা instantiate হবে। যখন আমরা রাউটিং মডিউল রাউটার মডিউল ব্যবহার করে তৈরি করা হয়। forChild , কৌণিক ইচ্ছা না রাউটার পরিষেবার তাত্পর্যপূর্ণ।
  তাই আমরা কেবল রাউটার মডিউল ব্যবহার করতে পারি। forRoot একবার এবং ব্যবহার রাউটার মডিউল অতিরিক্ত রাউটিং মডিউলগুলির জন্য চিল্ড বহুবার।
  যেহেতু আমাদের অ্যাপ্লিকেশনে কেবলমাত্র একটি রাউটিং মডিউল আছে, আমরা রাউটার মডিউল ব্যবহার করি। forRoot :
  আমদানি: [রাউটার মডিউল forRoot (যাত্রাপথ)]
  উপরন্তু, আমরা এক্সপোর্ট সম্পত্তি মধ্যে রাউটার মডিউল নির্দিষ্ট করা হয়:
  রপ্তানি: [রাউটার মডিউল]
  এটি নিশ্চিত করে যে আমাদের রাউটার মডিউল আবার অ্যাপমডিয়াল যখন AppModule আমদানি AppRouting মডিউল
  এখন আমাদের AppRouting মডিউল আছে, এটি আমাদের AppModule এ আমদানি করতে হবে যাতে এটি সক্রিয় করতে পারে।
  রাউটিং কনফিগারেশন আমদানি
  আমাদের অ্যাপ্লিকেশন আমাদের রাউটিং কনফিগারেশন আমদানি করতে, আমাদের AppRoutingModule আমাদের প্রধান AppModule মধ্যে আমদানি করতে হবে।
  আসুন খুলুন src / app / app মডিউল। এবং AppRouting মডিউল থেকে আমদানি অ্যারে AppModule এর @ এনজিএমডিয়াম মেটাডাটা:
  'এঙ্গুলার / প্ল্যাটফর্ম-ব্রাউজার' থেকে আমদানি {ব্রাউজার মডিউল};'এঙ্গেলার / কোর' থেকে আমদানী {এনজিএমডুলি};'এঙ্গেলার / ফর্ম' থেকে আমদানি করা {ফর্মস মডিউল};'এঙ্গেলার / এইচপি' থেকে আমদানি করা {HttpModule};আমদানি করা {AppComponent} থেকে ' / অ্যাপ্লিকেশান। উপাদান';আমদানি করা {TodoListComponent} থেকে ' / করণীয় তালিকা / করণীয়-তালিকা। উপাদান';আমদানি করা {TodoListFooterComponent} থেকে ' / করণীয় তালিকা-ফুটার / করণীয় তালিকা-ফুটার। উপাদান';আমদানি করা {TodoListHeaderComponent} থেকে ' / করণীয় তালিকা-হেডার / করণীয় তালিকা-হেডার। উপাদান';আমদানি করা {TodoDataService} থেকে ' / করণীয়-ডেটা। সেবা ';আমদানি করা {TodoListItemComponent} থেকে ' / করণীয় তালিকা-আইটেম / করণীয় তালিকা আইটেম। উপাদান';আমদানি করা {ApiService} থেকে ' / API। সেবা ';থেকে আমদানি {AppRoutingModule} ' / অ্যাপ-রাউটিং। মডিউল ';@NgModule ({ঘোষণা: [AppComponent,TodoListComponent,TodoListFooterComponent,TodoListHeaderComponent,TodoListItemComponent],আমদানী: [AppRoutingModule,BrowserModule,FormsModule,HttpModule],প্রদানকারীগণ: [টডো ডেটা সার্ভিস, অ্যাপি সার্ভিস],বুটস্ট্র্যাপ: [AppComponent]})এক্সপোর্ট ক্লাস AppModule {}
  এক্সট্রাআউটিং মডিউল এর রউটিং মডিউল রউটিং মডিউল এর তালিকাভুক্ত সম্পত্তি সম্পত্তি, কৌণিক আমদানি করা হবে রাউটিং মডিউল স্বয়ংক্রিয়ভাবে যখন আমরা আমদানি করি AppRouting মডিউল
  62), তাই আমাদের স্পষ্টভাবে রাউটার মডিউল আবার আমদানি করতে হবে না (যদিও এটি করা কোন ক্ষতির কারণ হবে না)।
  মিমিলে আমরা ব্রাউজারে আমাদের পরিবর্তনগুলি পরীক্ষা করতে পারি, আমাদের তৃতীয় এবং চূড়ান্ত পদক্ষেপটি সম্পন্ন করতে হবে।
  একটি রাউটার আউটলেট যোগ করা
  যদিও আমাদের অ্যাপ্লিকেশনে এখন একটি রাউটিং কনফিগারেশন রয়েছে, তবে আমরা এখনও Angular রাউটারকে বলার প্রয়োজন আছে যেখানে এটি DOM এ তাৎক্ষণিক উপাদান স্থাপন করতে পারে।
  যখন আমাদের অ্যাপ্লিকেশনটি বুটস্ট্র্যাপ করা হয়, তখন কোণীয় তাত্ত্বিক AppComponent কারণ AppComponent বুটস্ট্র্যাপ সম্পত্তি AppModule এর তালিকায় আছে:
  @ এনজিএমডিয়াম ({//। ।.
  উপাদান কোণীয় রাউটার দেখায় যেখানে এটি DOM- এ উপাদানগুলি সূচনা করতে পারে।
  যদি আপনি পরিচিত AngularJS 1. এক্স রাউটার এবং UI- রাউটার, আপনি বিবেচনা করতে পারেন             Angular বিকল্প    এনজি-ভিউ    এবং    ইউই-ভিউ   ।
  একটি         উপাদান ছাড়া, কৌণিক রাউটার উপাদান কোথায় রাখবে তা জানেন না এবং শুধুমাত্র    AppComponent    এর নিজস্ব HTML রেন্ডার করা হবে ।
  AppComponent    বর্তমানে todo এর একটি তালিকা প্রদর্শন
  ধারণ করার জন্য    AppComponent    এর বদলে একটি তালিকা প্রদর্শন করে আমরা এখন    AppComponent    এবং    AppComponent    এর মধ্যে অন্য উপাদান তাত্পর্য করার জন্য কোণীয় রাউটারকে বলুন TODO এর তালিকা প্রদর্শন।
  এটি সম্পন্ন করার জন্য, আসুন একটি নতুন কম্পোনেন্ট তৈরি করি    টোগো কম্পোনেন্ট্ট    Angular CLI ব্যবহার করে:
  $ এনগ্রেড কম্পোনেন্ট totos
  এবং সব HTML থেকে সরান src / app / app উপাদান. html থেকে src / app / todos / todos। উপাদান. html :
  এবং সমস্ত যুক্তি থেকে src / app / app উপাদান. ts থেকে src / app / todos / todos। উপাদান. ts :
  / * src / app / todos / todos। উপাদান. ts * /ইম্পোর্ট {কম্পোনেন্ট, অনইনাইট} থেকে 'এঙ্গিলার / কোর';আমদানি করা {TodoDataService} থেকে ' । / করণীয়-ডেটা। সেবা ';আমদানি করুন {টডো} থেকে ' । /করতে';@উপাদান({নির্বাচক: 'অ্যাপ-টুডোস',টেমপ্লেট: '। / Todos। উপাদান. এইচটিএমএল ',শৈলীটি: [' / Todos। উপাদান. CSS '],প্রদানকারীগণ: [টডড্যাটাসার্জি]})এক্সপোর্ট ক্লাস TodosComponent অনিয়মিত প্রয়োগ করে {todos: টডো [] = [];কন্সট্রাক্টর (প্রাইভেট টুডডেটস সার্ভিস: টডো ডেটা সার্ভিস) {}পাবলিক এনজিওনিট    {এই. todoDataService। getAllTodos   । সাবস্ক্রাইব((todos) => {এই. todos = todos;});}উপরঅডডটো (TODO) {এই. todoDataService। addTodo (করণীয়)। সাবস্ক্রাইব((নতুন টডো) => {এই. টুডোস = এই todos। CONCAT (newTodo);});}onToggleTodoComplete (TODO) {এই. todoDataService। toggleTodoComplete (করণীয়)। সাবস্ক্রাইব((আপডেট করা হয়েছে) => {টুড্ড = আপডেট করা হয়েছে;});}onRemoveTodo (TODO) {এই. todoDataService। deleteTodoById (TODO। আইডি)। সাবস্ক্রাইব((_) => {এই. টুডোস = এই todos। ফিল্টার ((টি) => টি। আইডি! == টডো আইডি);});}}
  এখন আমরা প্রতিস্থাপন করতে পারি AppComponent এর টেমপ্লেট src / app / app উপাদান. এইচটিএমএল এর সাথে:
  এবং সমস্ত অপ্রচলিত কোড থেকে AppComponent এর বর্গ সরান src / app / app উপাদান. ts :
  'এঞ্জুলার / কোর' থেকে আমদানি {কম্পোনেন্ট};@উপাদান({নির্বাচক: 'অ্যাপ-রুট',টেমপ্লেট: '। / অ্যাপ্লিকেশান। উপাদান. এইচটিএমএল ',শৈলীটি: [' / অ্যাপ্লিকেশান। উপাদান. CSS '],})এক্সপোর্ট ক্লাস AppComponent {}
  অবশেষে, আমরা আমাদের todos রুট src / app / app- রাউটিং আপডেট করি। মডিউল.
  সামাল ব্রাউজারে আমাদের পরিবর্তনগুলি চেষ্টা করে দেখুন।
  আপনার ডেভেলপমেন্ট সার্ভার এবং আপনার ব্যাক-এন্ড এপিআই চালানো:
  $ এনজি সেবা$ NPM রান json-server
  এবং ব্রাউজারে নেভিগেট করুন http: // localhost: 4200 ।
  কৌণিক রাউটার রাউটার কনফিগারেশনটি পড়ে এবং স্বয়ংক্রিয়ভাবে আমাদের ব্রাউজারকে http: // localhost: 4200 / todos এ পুনর্নির্দেশ করে।
  যদি আপনি পৃষ্ঠার উপাদানগুলির নিরীক্ষণ করেন তবে আপনি দেখতে পাবেন যে টডস কম্পোনেন্টটি এর ভিতরে এটা:
  আমাদের অ্যাপ্লিকেশন এখন রাউটিং সক্ষম আছে। অসাধারণ!
  একটি ওয়াইল্ডকার্ড রুট যোগ করা
  আপনি যখন আপনার ব্রাউজারে নেভিগেট করেন http: // localhost: 4200 / unmatched-url , এবং আপনি আপনার ব্রাউজারের বিকাশকারী সরঞ্জাম খুলুন, আপনি লক্ষ্য করবেন যে কৌণিক রাউটার কনসোলে নিম্নলিখিত ত্রুটি লগ করবে:
  ত্রুটি: কোন রুট মেলে না। URL বিভাগ: 'অপ্রত্যাশিত- url'
  অক্লান্ত মিষ্টি আলাদাভাবে হ্যান্ডেল করার জন্য আমাদের দুটি জিনিস করতে হবে:
  তৈরি করুন PageNotFoundComponent (যদি আপনি চান তবে আপনি ভিন্নভাবে এটি নাম করতে পারেন) একটি বন্ধুত্বপূর্ণ বার্তা প্রদর্শন করতে অনুরোধকৃত পাতা পাওয়া যায়নি
  দেখানোর জন্য কোণীয় রাউটারকে বলুন PageNotFoundComponent যখন কোনো রুট অনুরোধ করা URL
  সাথে মেলে না
  আসুন শুরু করা যাক PageNotFoundComponent Angular CLI ব্যবহার করে:
  $ এনজিগ্র্যাজ়া পৃষ্ঠানোটফাউন্ড উৎপন্ন করে
  এবং তার টেমপ্লেটটি সম্পাদনা করুন src / app / page-not-found / page-found-found। উপাদান. html :
  আমরা দুঃখিত, অনুরোধকৃত পৃষ্ঠা পাওয়া যায়নি।
  পরবর্তী, আমরা ** একটি পথ হিসাবে ব্যবহার করে একটি ওয়াইল্ডকার্ড রুট যোগ করুন:
  স্থায়ী রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: 'todos',উপাদান: AppComponent},{পথ: '**',উপাদান: PageNotFoundComponent}];
  ** শিশু রাস্তা সহ কোন ইউআরএল মেলে।
  এখন, যদি আপনি আপনার ব্রাউজারে নেভিগেট করেন http: // localhost: 4200 / আনমার্ক-ইউআরএল , PageNotFoundComponent প্রদর্শিত হয়।
  সেমিট যে ওয়াইল্ডকার্ড রুটটি আমাদের রাউটিং কনফিগারেশনের শেষ রুট হতে হবে যাতে এটি প্রত্যাশিত হিসাবে কাজ করতে পারে।
  রাউটার কনফিগারেশনে মিমোল্ট রাউটারের অনুরোধের URL মিলবে যখন এটি প্রথম ম্যাচ খুঁজে বের করে যত তাড়াতাড়ি প্রসেসিং বন্ধ করে দেবে।
  অতএব, যদি আমরা রুটসমূহের পরিবর্তে পরিবর্তিত হতাম:
  স্থায়ী রুট: রুট = [{পথ: '',redirectTo: 'todos',pathMatch: 'পূর্ণ'},{পথ: '**',উপাদান: PageNotFoundComponent},{পথ: 'todos',উপাদান: AppComponent}];
  তারপর টডোস কখনোই পৌঁছাবে না এবং PageNotFoundComponent প্রদর্শিত হবে কারণ ওয়াইল্ডকার্ড রুট প্রথম সাথে মিলে যাবে।
  ইতোমধ্যে আমরা অনেক কাজ করেছি, অতএব, আমরা যতটুকু অর্জন করেছি তা দ্রুত সংশোধন কর।
  আমরা কৌণিক রাউটার সেট
  আমরা আমাদের অ্যাপ্লিকেশন জন্য রাউটিং কনফিগারেশন তৈরি
  আমরা পুনঃফেক্ট AppComponent থেকে TodosComponent
  আমরা যোগ করেছি থেকে AppComponent এর টেমপ্লেট
  আমরা বেহুদা URL গুলোকে সুন্দরভাবে পরিচালনা করার জন্য একটি ওয়াইল্ডকার্ড রুট যোগ করেছি
  পরবর্তী, আমরা স্যামল্ট রাউটার ব্যবহার করে আমাদের ব্যাক-এন্ড API থেকে বিদ্যমান TODO আনতে একটি সমাধানকারী তৈরি করব Source .
  বর্তমানে, যখন আমরা todos URL এ আমাদের ব্রাউজার নেভিগেট, নিম্নলিখিত ঘটবে:
  কোণীয় রাউটার সাথে মিলিত todos URL
  কৌণিক রাউটার সক্রিয় TodosComponent
  কৌণিক রাউটার টোগো কম্পোনেন্টটি পরবর্তী DOM
  টডোস কম্পোনেন্টস ব্রাউজারে একটি খালি অ্যারে টডো এর
  সঙ্গে প্রদর্শিত হয়
  TODO এর এনজিওঅন্টিট টডস কম্প্যানেন্টের হ্যান্ডলার এপিআই থেকে প্রাপ্ত হয়
  টডস কম্পোনেন্টটি ব্রাউজারে অ্যাডমিন
  ধাপ 5 এর লোড লোড হলে 3 সেকেন্ড লাগে, ধাপ 6 এ প্রদর্শিত প্রকৃত টডোরের আগে 3 সেকেন্ডের জন্য ব্যবহারকারীকে একটি খালি তালিকা দিয়ে উপস্থাপন করা হবে।
  যদি টডস কম্পোনেন্টটি এর টেমপ্লেটটির মধ্যে নিম্নলিখিত HTML থাকতে হয়:
  আপনি বর্তমানে কোনও TODO এর নেই।
  তারপর ব্যবহারকারী এই বার্তা 3do আগে প্রকৃত todo প্রদর্শিত প্রদর্শিত হবে, যা পুরোপুরি ব্যবহারকারী ভ্রান্ত করতে পারে এবং ব্যবহারকারী তথ্য দূরে আসার আগে নেভিগেট করতে পারে।
  আমরা একটি লোডার যোগ করতে পারি TodosComponent যে একটি স্পিনার দেখায় যখন তথ্য লোড হয়, কিন্তু কখনও কখনও আমরা প্রকৃত উপাদান উপর নিয়ন্ত্রণ নাও হতে পারে, উদাহরণস্বরূপ যখন আমরা একটি তৃতীয় পক্ষের কম্পোনেন্ট ব্যবহার
  এই অবাঞ্ছিত আচরণ ঠিক করতে, আমরা ঘটতে নিম্নলিখিত প্রয়োজন:
  কৌণিক রাউটার TODO এর API থেকে
  এই টডস কম্পোনেন্টটি ব্রাউজারে দেখানো হয়েছে যেটি API এর
  যেখানে TodosComponent আমাদের API ব্যাক-এন্ডের ডেটা উপলভ্য না হওয়া পর্যন্ত প্রদর্শন করা হয় না।
  এটা ঠিক যে একজন সংকলক আমাদের জন্য কী করতে পারে।
  টয়োস কম্পোনেন্টটি চালু করার আগে কৌণিক রাউটারটিকে টোলের টানাপোড়নের টানতে দিন, আমরা দুটি জিনিস করতে পারি:
  তৈরি করুন একটি TodosResolver যে TODO এর এডিআই থেকে fetched
  TODOS রুট TODOS কম্পোনেন্ট TODO কম্পোনেন্ট সক্রিয় করার সময়
  TODOSResolver ব্যবহার করার জন্য Angular রাউটারটি ব্যবহার করুন
  todos রুট একটি সংশোধক সংযুক্ত দ্বারা আমরা আগে ডাটা TodosComponent সক্রিয় করার আগে কোণার রাউটার জিজ্ঞাসা করুন।
  সুতরাং আসুন একটি টেকো এর জন্য আমাদের খুঁজে বের করার জন্য একটি সমাধানকারী তৈরি করা।
  টডোসোলার তৈরি
  কৌণিক CLI- র একটি সমাধানকারী তৈরি করার জন্য একটি কমান্ড নেই, সুতরাং আসুন একটি নতুন ফাইল তৈরি করা যাক src / todos। সমাধানকারী। ts ম্যানুয়ালি এবং নিম্নলিখিত কোড যোগ করুন:
  'এঞ্জুলার / কোর' থেকে আমদানি {ইনজেকশন};ইম্পোর্ট {অ্যাক্টিভেটরউইটসনপট, রেসেলভ, রাউটার স্টেটসানপশট} 'এঙ্গেলার / রাউটার' থেকে;'Rxjs / Observable' থেকে {Observable} আমদানি করুন;আমদানি করুন {টডো} থেকে ' /করতে';আমদানি করা {TodoDataService} থেকে ' / করণীয়-ডেটা। স