Open In App

What is the difference between declarations, providers, and import in NgModule?

Let us first discuss about these terms:

Differences:



Declarations

Providers

Imports

Declarations are used to make directives. Providers are used to make services. Imports makes the exported declarations of other modules available in the current module.
Used to declare components, directives, pipes that belongs to the current module. Used to inject the services required by components, directives, pipes in our module. Used to import supporting modules likes FormsModule, RouterModule, etc.
Ex. AppComponent. Ex. StateService. Ex. BrowserModule.

Defined in Declarations array in @NgModule

@NgModule({

 declarations: [  ],

 )}

Defined in Providers array in @NgModule.

@NgModule({

providers: [ ],

)}

Defined in imports array in @NgModule.

@NgModule({

imports: [],

)}

An example in which all three declarations, imports and providers are used:

The providers used in this project is custom service named UserService.



ng g s User

user.service.ts




import { Injectable } from '@angular/core';
 
@Injectable({
  providedIn: 'root'
})
export class UserService {
 
  constructor() { }
}

This UserService is used as provider in app.module.ts.

app.module.ts




// imports for the application
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { FormsModule } from '@angular/forms';
import { AppRoutingModule } from './app-routing.module';
// declarations for the application
import { AppComponent } from './app.component';
// providers for the application
import { UserService } from './user.service';
 
@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule,
    FormsModule
  ],
  providers: [UserService],
  bootstrap: [AppComponent]
})
export class AppModule { }

app.component.html




<h1>GeeksforGeeks</h1>
<ul>
    <li>imports in this app: BrowserModule,
      AppRoutingModule, HttpClientModule, FormsModule</li>
    <li>declarations in this app: AppComponent</li>
    <li>providers in this app: UserService</li>
</ul>

Output:


Article Tags :