Comme pour la version finale Angulaire 2, les services fournis par un module sont disponibles pour tous les autres modules qui l'importe.
Le Style Officiel Guide de conseils que l'ensemble de l'application services (singletons) qui doivent être réutilisé n'importe où dans la demande doivent être fournies par certains Core Module
, pour être importé dans le principal App Module
de sorte qu'il serait injectable partout.
Si vous n'utilisez pas une structure qui comporte un Module de Base avec un partage des singletons, et vous êtes indépendamment du développement de deux NgModules, et que vous voulez un service à l'un d'entre eux à être utilisé dans l'autre, alors la seule solution est d'importer le fournisseur dans l'autre :
Voici le fournisseur de module:
/// some.module.ts
import { NgModule } from '@angular/core';
import { SomeComponent } from './some.component';
@NgModule({
imports: [],
exports: [],
declarations: [SomeComponent],
providers: [ MyService ], // <======================= PROVIDE THE SERVICE
})
export class SomeModule { }
Voici l'autre module, qui veut utiliser MyService
/// some-other.module.ts
import { NgModule } from '@angular/core';
import { SomeModule } from 'path/to/some.module'; // <=== IMPORT THE JSMODULE
import { SomeOtherComponent } from './some.other.component';
@NgModule({
imports: [ SomeModule ], // <======================== IMPORT THE NG MODULE
exports: [],
declarations: [SomeOtherComponent],
providers: [],
})
export class SomeOtherModule { }
De cette façon, le service devrait être injectable dans un composant SomeOtherModule
déclare, et dans SomeModule lui-même - il suffit de demander pour elle dans le constructeur:
/// some-other.module.ts
import { MyService } from 'path/to/some.module/my-service';
/* ...
rest of the module
*/
export class SomeOtherModule {
constructor( private _myService: MyService) { <====== INJECT THE SERVICE
this._myService.dosmth();
}
}
Si ce n'est pas la réponse à votre question, je vous invite à re-formuler.