আমি উত্তরগুলি সঠিক বলে মনে করি তবে আমার মনে হয় কিছু অনুপস্থিত।
যে জিনিসটি অনুপস্থিত তা হ'ল "কেন এবং কী সমাধান করে?"।
ঠিক আছে চল শুরু করি.
প্রথমে কিছু তথ্য উল্লেখ করা যাক:
সমস্ত মডিউলগুলির রুট পরিষেবাদিতে অ্যাক্সেস রয়েছে।
এমনকি অলস লোডযুক্ত মডিউলগুলি এমন পরিষেবা ব্যবহার করতে পারে যা সরবরাহ করা হয়েছিল app.module
।
যদি অলস বোঝাই মডিউলটি নিজের কাছে এমন পরিষেবা সরবরাহ করে যা অ্যাপ মডিউলটি ইতিমধ্যে সরবরাহ করেছে? সেখানে থাকবে 2 দৃষ্টান্ত।
এটি কোনও সমস্যা নয় তবে কখনও কখনও এটি হয় ।
আমরা কীভাবে এটি সমাধান করতে পারি? অলস লোডযুক্ত মডিউলগুলিতে কেবল সেই সরবরাহকারীর সাথে কোনও মডিউল আমদানি করবেন না।
গল্পের শেষে.
এটি কেবলমাত্র এটি দেখানোর জন্য ছিল যে অলস লোডযুক্ত মডিউলগুলির নিজস্ব ইনজেকশন পয়েন্ট রয়েছে (অলস-লোডযুক্ত মডিউলগুলির বিপরীতে)।
কিন্তু যখন কোনও ভাগ করা (!) মডিউলটি ঘোষণা করে providers
এবং সেই মডিউলটি অলস এবং দ্বারা আমদানি করা হয় তখন কী ঘটে app.module
? আবার, যেমনটি আমরা বলেছিলাম, দুটি উদাহরণ।
সুতরাং আমরা কীভাবে ভাগ করা মডিউল POV এ এটি সমাধান করতে পারি? আমাদের ব্যবহার না করার উপায় দরকার providers:[]
! কেন? কারণ সেগুলি গ্রাসকারী অলস এবং অ্যাপ্লিকেশন উভয়টিতেই স্বয়ংক্রিয়ভাবে আমদানি করা হবে and
ঠিক আছে, দেখা যাচ্ছে যে আমরা এমন একটি ভাগ করা মডিউল ঘোষণা করতে পারি যা নেই providers:[]
, তবে এখনও সরবরাহকারী সরবরাহ করবে (দুঃখিত :))
কিভাবে? এটার মত :
লক্ষ্য করুন, কোনও সরবরাহকারী নেই।
কিন্তু
সম্মেলনের মাধ্যমে ম্যানুয়াল প্রক্রিয়া প্রবেশ করানো:
আপনি লক্ষ্য করবেন আছে ছবির মধ্যে প্রদানকারীর service1
এবংservice2
এটি আমাদের service2
অলস লোডযুক্ত মডিউল এবং অলস মডিউলগুলির জন্য আমদানি করতে সহায়তা করে service1
। ( কাশি ... রাউটার .... কাশি )
বিটিডাব্লু, কেউ আপনাকে forRoot
অলস মডিউলে কল করতে বাধা দিচ্ছে না । তবে আপনার কাছে 2 টি উদাহরণ থাকবে কারণ app.module
এটিও করা উচিত - সুতরাং অলস মডিউলগুলিতে এটি করবেন না ।
এছাড়াও - যদি app.module
কল forRoot
(এবং কেউ কল করেন না forchild
) - এটি দুর্দান্ত, তবে রুট ইনজেক্টরটি কেবল থাকবে service1
। (সমস্ত অ্যাপের জন্য উপলব্ধ)
তাহলে আমাদের কেন এটি দরকার? আমি বলতে চাই :
এটি একটি ভাগ করা মডিউলটিকে, তার বিভিন্ন সরবরাহকারীকে আগ্রহী মডিউল এবং অলস মডিউলগুলির মাধ্যমে এবং কনভেনশনের মাধ্যমে বিভক্ত করতে সক্ষম করে । আমি পুনরাবৃত্তি: সম্মেলনforRoot
forChild
এটাই.
অপেক্ষা করুন !! সিঙ্গেলটন সম্পর্কে একটি শব্দ না ?? তাহলে আমি কেন সব জায়গায় সিঙ্গলটন পড়ি?
ভাল - এটি উপরের বাক্যে লুকিয়ে আছে ^
এটি একটি ভাগ করা মডিউলটিকে তার বিভিন্ন সরবরাহকারীকে উত্সাহিত মডিউল এবং অলস মডিউলগুলি - ফররুট এবং ফোরচিল্ডের মাধ্যমে বিভক্ত করতে সক্ষম করে ।
কনভেনশন বা আরও ভালো হবে - - আপনি কনভেনশন অনুসরণ করবে না - আপনি পাবেন (!!!) এটি Singleton হতে পারবেন না একটি Singleton পেতে।
সুতরাং আপনি যদি কেবলমাত্র লোড forRoot
করেন app.module
তবে আপনি কেবল একটি উদাহরণ পাবেন কারণ আপনার কেবলমাত্র forRoot
এটিতে কল করা উচিত app.module
।
বিটিডাব্লু - এই মুহুর্তে আপনি ভুলে যেতে পারেন forChild
। অলস বোঝা মডিউলটি কল করবে না / কল করবে না forRoot
- সুতরাং আপনি সিঙ্গলটনের পিওভিতে নিরাপদ।
ফরআরট এবং ফরচিল্ড একটি অবিচ্ছেদ্য প্যাকেজ নয় - এটি কেবলমাত্র যে রুটকে কল করার কোনও মানে নেই যা স্পষ্টতই কেবল app.module
অলস মডিউলগুলির সক্ষমতা না দিয়েই লোড করা হবে , নতুন পরিষেবা তৈরি না করে নিজস্ব পরিষেবা থাকবে-যা-হওয়া উচিত -singleton।
এই কনভেনশনটি আপনাকে একটি দুর্দান্ত ক্ষমতা বলে forChild
- যা "কেবলমাত্র অলস লোডযুক্ত মডিউলগুলির জন্য পরিষেবাগুলি" গ্রাহ্য করতে।
এখানে একটি ডেমো রুট সরবরাহকারী ইতিবাচক সংখ্যা দেয়, অলস লোডযুক্ত মডিউলগুলি নেতিবাচক সংখ্যা দেয়।