В соответствии с окончательной версией Angular 2 услуги, предоставляемые модулем, доступны для всех других модулей, которые его импортируют. Официальное руководство по стилю советует, что общесистемные сервисы (одиночные), которые должны повторно использоваться в любом месте приложения, должны предоставляться каким-то Core Module
, то есть импортироваться в главный App Module
, чтобы он быть инъекционным везде.
Если вы не используете структуру, которая включает основной модуль с общими синглетонами, и вы независимо разрабатываете два модуля NgModules, и вы хотите, чтобы служба в одном из них использовалась в другом, то единственное решение - импортировать поставщика в другой :
Вот модуль провайдера:
/// 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 { }
Вот другой модуль, который хочет использовать 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 { }
Таким образом, сервис должен быть внедрен в любой компонент, объявленный SomeOtherModule
, а в самом SomeModule - просто запросите его в конструкторе:
/// 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();
}
}
Если это не дает ответа на ваш вопрос, я предлагаю вам переформулировать его.
person
FacelessPanda
schedule
13.11.2016
@NgModule()
. Услуги, предоставляемые в@NgModule()
, используются совместно со всем приложением и, следовательно, также со всеми модулями в вашем приложении (кроме случаев, когда модуль, в котором вы предоставляете услугу, загружается лениво). - person Günter Zöchbauer   schedule 17.10.2016