angular 2子模块继承父服务
在遵循指南的过程中,我们将不同的路线分为不同的模块。。但是,如果对于每个模块,我需要包含所有rel,那么现在代码中似乎有一点开销。服务、提供商和管道 ang2是否将导入传递给子模块 例如: 目前,该应用程序没有针对每个区域的拆分模块。。所以现在所有的提供者等都通过应用程序的其余部分传递 但是。。。从ang2 plunker:angular 2子模块继承父服务,angular,Angular,在遵循指南的过程中,我们将不同的路线分为不同的模块。。但是,如果对于每个模块,我需要包含所有rel,那么现在代码中似乎有一点开销。服务、提供商和管道 ang2是否将导入传递给子模块 例如: 目前,该应用程序没有针对每个区域的拆分模块。。所以现在所有的提供者等都通过应用程序的其余部分传递 但是。。。从ang2 plunker: 主app.module.ts包括模块,这些模块本身包括自己的路由等。我不知道如何将导入从父模块传递到子模块 尽管Angular 2确实有办法在多个模块之间共享公共导入,并
主
app.module.ts
包括模块,这些模块本身包括自己的路由等。我不知道如何将导入从父模块传递到子模块
尽管Angular 2确实有办法在多个模块之间共享公共导入,并使用SharedModule简化样板文件。见:
比如:
@NgModule({
exports: [
BrowserModule,
DndModule.forRoot(),
HttpModule,
FormsModule,
ReactiveFormsModule,
AppRoutingModule,
StoreModule.provideStore(
StoreLoader.reducers(),
StoreLoader.initialState()
),
StoreDevtoolsModule.instrumentStore({
monitor: useLogMonitor({
visible: BootstrapDataService.reduxStoreDebug(),
position: 'right'
}),
}),
SummaryPipe,
DateFormatPipe,
MomentDatePipe,
TimeAgoPipe,
SanitizeHtml,
SafePipe,
ValuesPipe,
DisplayNamePipe,
UserHasPermissionPipe,
UserHasRolePipe
StoreLogMonitorModule,
TranslateModule.forRoot({
provide: TranslateLoader,
useFactory: (http: Http) => new TranslateStaticLoader(
http,
window.crowdRoute + 'assets/i18n',
'.json'
),
deps: [Http]
})]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [
BootstrapDataService,
CommentService,
Helpers,
ImageService,
ProjectService,
SuggestionService,
AuthService,
AuthResolver,
{
provide: APP_BASE_HREF,
useValue: window.crowdRoute
},
{
provide: Http,
useFactory: (xhrBackend: XHRBackend, requestOptions: RequestOptions, router: Router) => new CrowdHttp(xhrBackend, requestOptions, router, null),
deps: [XHRBackend, RequestOptions, Router]
},
{
provide: BrowserXhr,
useClass: CrowdBrowserXHR
}
]]
};
}
}
然后在您的子模块和主模块中,您需要导入的只是SharedModule和模块的特定(非通用)导入
@NgModule({
imports: [
, SharedModule]
... Other code
})
export class MyModule { }
您可以在angular seed项目中看到此功能的良好实现:
@NgModule({
exports: [
BrowserModule,
DndModule.forRoot(),
HttpModule,
FormsModule,
ReactiveFormsModule,
AppRoutingModule,
StoreModule.provideStore(
StoreLoader.reducers(),
StoreLoader.initialState()
),
StoreDevtoolsModule.instrumentStore({
monitor: useLogMonitor({
visible: BootstrapDataService.reduxStoreDebug(),
position: 'right'
}),
}),
SummaryPipe,
DateFormatPipe,
MomentDatePipe,
TimeAgoPipe,
SanitizeHtml,
SafePipe,
ValuesPipe,
DisplayNamePipe,
UserHasPermissionPipe,
UserHasRolePipe
StoreLogMonitorModule,
TranslateModule.forRoot({
provide: TranslateLoader,
useFactory: (http: Http) => new TranslateStaticLoader(
http,
window.crowdRoute + 'assets/i18n',
'.json'
),
deps: [Http]
})]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [
BootstrapDataService,
CommentService,
Helpers,
ImageService,
ProjectService,
SuggestionService,
AuthService,
AuthResolver,
{
provide: APP_BASE_HREF,
useValue: window.crowdRoute
},
{
provide: Http,
useFactory: (xhrBackend: XHRBackend, requestOptions: RequestOptions, router: Router) => new CrowdHttp(xhrBackend, requestOptions, router, null),
deps: [XHRBackend, RequestOptions, Router]
},
{
provide: BrowserXhr,
useClass: CrowdBrowserXHR
}
]]
};
}
}
@NgModule({
imports: [
, SharedModule]
... Other code
})
export class MyModule { }