در چرخه حیات انگولار که در این مطلب آموزشی از روکسو پلاس وجود داشت، درباره تفاوت بین Constructor و ngOnInit صحبتی نشده است.
سوال بنده اینه که چرا باید از ngOnInit استفاده کرد درحالیکه constructor کاری مشابه آن را انجام می دهد؟
سازنده یا Constructor یک متد پیش فرض می باشد که در تمام کلاس ها وجود دارد. این متد پیش فرض در تمام زبان های برنامه نویسی که قابلیت شیءگرایی دارند مورد استفاده قرار می گیرد و وظیفه آن مقدار دهی اولیه به ویژگی ها یا فیلدها است.
در انگولار یا بهتره بگویم به هنگام تزریق وابستگی (Dependency Injection) یا DI معمولا سازنده ها به عنوان پارامترهای خود، کلاس های دیگر را درون خود قرار می دهند. این بدین معنی است که وقتی شما قصد ساخت یک نمونه از یک کلاس myClass را دارید، می توانید به سایر کلاس هایی که به عنوان پارامتر به سازنده تزریق شده اند، دسترسی داشته باشید:
new MyClass(someArg);
در نمونه کد بالا عبارت someArg می تواند با سایر کلاسهایی که به کلاس myClass تزریق شده اند، جایگزین شود.
از طرفی دیگر ngOnInit به عنوان یک چرخه حیات از انگولار به حساب می آید که از نسخه ۲ به بعد انگولار معرفی شد و بیانگر این است که کلاس کامپوننت انگولار مقدار دهی اولیه شده است.
برای استفاده از این متد یا چرخه حیات باید حتما کلاس OnInit را از angular/core فراخوانی کنید:
import {Component, OnInit} from '@angular/core';
از طرفی برای استفاده از متد ngOnInit آن را به صورت زیر تعریف می کنید:
export class App implements OnInit{
constructor(){
//قبل از ngOnInit اجرا می شود
}
ngOnInit(){
//بعد از سازنده و درست قبل از ngOnChanges()
}
}
در اکثر مواقع از ngOnInit برای مقدار دهی اولیه یک کامپوننت استفاده می شود. اما زمانی از constructor استفاده می کنیم که بخواهیم تزریق وابستگی انجام دهیم در غیر اینصورت کافیست ngOnInit را فراخوانی کنید.
در صورتیکه با مفاهیم تزریق وابستگی آشنایی ندارید لطفا این لینک از روکسو پلاس را مطالعه بفرمایید.
به جمع هزاران کاربر اینستاگرامی روکسو بپیوندید.