2 votes

Module de base d'Angular 4, pourquoi y a-t-il deux tableaux de fournisseurs ?

J'ai consulté la documentation officielle d'angular sur NgModule ( https://angular.io/guide/ngmodule#configure-core-services-with-coremoduleforroot ) et dans l'exemple fourni à la fin de la page, il y a le fichier core.module.ts

import { ModuleWithProviders, NgModule, Optional, SkipSelf }       from '@angular/core';
import { CommonModule }      from '@angular/common';
import { TitleComponent }    from './title.component';
import { UserService }       from './user.service';
import { UserServiceConfig } from './user.service';

@NgModule({
  imports:      [ CommonModule ],
  declarations: [ TitleComponent ],
  exports:      [ TitleComponent ],
  providers:    [ UserService ]
})
export class CoreModule {

  constructor (@Optional() @SkipSelf() parentModule: CoreModule) {
    if (parentModule) {
      throw new Error(
        'CoreModule is already loaded. Import it in the AppModule only');
    }
  }

  static forRoot(config: UserServiceConfig): ModuleWithProviders {
    return {
      ngModule: CoreModule,
      providers: [
        {provide: UserServiceConfig, useValue: config }
      ]
    };
  }
}

Il s'agit d'un module de base, et en utilisant le constructeur et la méthode forRoot nous sommes sûrs que le module de base n'est importé qu'une seule fois, et que nous n'avons qu'une seule instance des services fournis.

  • Quelle est la différence entre le tableau de fournisseurs dans le @NgModule({...}) et le tableau de fournisseurs dans la méthode forRoot ?
  • Dois-je fournir mes services singleton dans la section @NgModel ou dans le module de base ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X