یکی از گیج کننده ترین موارد هنگام ساخت یک component در Angular این هستش که تصمیم بگیریم چه چیزی را در constructor قرار بدیم و چه چیزی را در ngOnInit بنویسیم.هر دوی این روش ها برای اهداف مشابه استفاده می شوند ، هر دو در آغاز life cycle یک component یک بار اجرا می شن ، بنابراین دونستن اینکه چه چیزی را قرار بدیم می تونه دردسرساز باشه. توی این مقاله ، من سعی دارم در مورد زمان استفاده، و اینکه چرا ، و چه چیزهایی باید در اونها قرار بدیم و چه مواردی را نباید استفاده کنیم ، توضیح می دم.
اول از هرچیز بیایید کارهای هردو اینها هنگام اجرا یه بار با هم بررسی کنیم:
دو دلیل مهم برای اهمیت constructor در یک component وجود داره! اول، این یه متد توی lifecycle انگولار هستش ، به این معنی که هنگام ساخت component فراخوانی می شه، بنابراین ، اگر می خواهید کد خاصی در زمان مشخص (در حین ساخت) اجرا کنید، اینجا برای انجام اون مناسبه.اینجا جایی که شما یه سرویسی به component تزریق می کنید.
به استفاده از TypeScript در اینجا توجه کنید. ابتدا از کلمه کلیدی private استفاده می کنیم تا بتوانیم ارجاع به خدمات خودمون حفظ کنیم. دوم ، ما متغیر "ActService" را با نوع "ActorService" تایپ می کنیم تا Angular بداند کدام سرویس را می خواهیم.
از طرف دیگر ، روش ngOnInit فقط به عنوان یک روش lifecycle عمل می کنه ، وقتی مقدار اولیه شروع می شه ، اجرا می شه.
هر دو اینها در زمان های بسیار مشابهی از عمر یک component انجام می شوند. و ما اغلب می خواهیم هنگام ایجاد "component" ما انواع خاصی از کد اجرا شود.برخی از کدهای معمول برای اجرا در اینجا می تواند مقداردهی اولیه properties ، بارگیری داده هایی باشد که component متولی آن است ، معمولاً از طریق تماس های HTTP ، فراخوانی روش های اولیه در سرویس های تزریق شده و شروع فرایندها یا محاسبات باشه.
وقتی کلاس JavaScript ساخته می شود ، constructor اتفاق می افته.این اساساً اولین اتفاقی هستش که می تونه برای یک نمونه کلاس بیوفته. از طرف دیگه ، ngOnInit زمانی شروع به کار می کنه که component کاملا آماده شده باشه یعنی Angular تمام قطعات را بهم متصل می کرده باشه.
با استفاده از این مفهوم حالا می تونیم با استفاده از این دو روش بهترین کارها را بررسی کنیم ، اینکه چه چیزی را باید در هر کدام قرار بدیم ، و چه چیزی را نباید در هر کدام قرار بدیم.
برخی از متغیرهایی که می خواین مقدار دهی اولیه کنید یا سرویس هایی فراخوانی و تزریق در component وارد کنیم از constructor استفاده می کنیم.
از طرف دیگر ، روش ngOnInit هنگامی که component آماده و آماده برای کار باشد اجرا میشه. بنابراین ، تقریباً همه کد های راه اندازی باید به طور پیش فرض در اینجا قرار بگیرن.خواه این کار برقراری تماس HTTP ، برقراری تماس با سرویس های وابسته یا سایر موارد مشابه باشد.حتی می تونیم مقدار اولیه برای یک متغیر در اینجا قرار بدیم که این کار بسیار خوبه گرچه این کار توی constructor هم هیچ اشکالی نداره!
امیدوارم این مقاله قابل توجه شما بوده باشه و استفاده خوبی ازش ببرید.
مرسی از توجهتون :)