Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angular 2子模块继承父服务_Angular - Fatal编程技术网

angular 2子模块继承父服务

angular 2子模块继承父服务,angular,Angular,在遵循指南的过程中,我们将不同的路线分为不同的模块。。但是,如果对于每个模块,我需要包含所有rel,那么现在代码中似乎有一点开销。服务、提供商和管道 ang2是否将导入传递给子模块 例如: 目前,该应用程序没有针对每个区域的拆分模块。。所以现在所有的提供者等都通过应用程序的其余部分传递 但是。。。从ang2 plunker: 主app.module.ts包括模块,这些模块本身包括自己的路由等。我不知道如何将导入从父模块传递到子模块 尽管Angular 2确实有办法在多个模块之间共享公共导入,并

在遵循指南的过程中,我们将不同的路线分为不同的模块。。但是,如果对于每个模块,我需要包含所有rel,那么现在代码中似乎有一点开销。服务、提供商和管道

ang2是否将导入传递给子模块

例如:

目前,该应用程序没有针对每个区域的拆分模块。。所以现在所有的提供者等都通过应用程序的其余部分传递

但是。。。从ang2 plunker:


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 { }