Components, Services, Directives all are classes in angular 2+. But their expected behavior differs with the decorator (like @NgModule
, @Component
) declared in their class.
NgModule decorator used to set up angular module. Its a notation that says the class is not an ordinary class. Its a module.
NgModule takes metadata object like imports
, declarations
, bootstrap
, providers
imports
used to import the dependent module like BrowserModule
,
FormsModule
, HttpModule
declaration
used to import components
bootstrap
defines the root application component
providers
defines the services
@NgModule({
bootstrap: [AppComponent],
declarations: [
AppComponent,
CustomerSelectionComponent,
ResetPasswordComponent,
DashboardComponent,
],
imports: [ // import Angular's modules
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpModule,
LoginModule,
],
providers: [ // expose our Services and Providers into Angular's dependency injection
ENV_PROVIDERS,
APP_PROVIDERS,
DatePipe
]
})