Angular 延迟加载模块中的角度使用服务

Angular 延迟加载模块中的角度使用服务,angular,angular-routing,angular-services,Angular,Angular Routing,Angular Services,我有一个名为routing.service的服务,它订阅路由事件,当参数更改时,它会更新Translate服务。在建造商中如下所示: this.router.events.subscribe(val => { if (val instanceof ActivationEnd ) { let myVal = val.snapshot.params.lang; this.currentLang = myVal; this.translat

我有一个名为
routing.service
的服务,它订阅路由事件,当参数更改时,它会更新Translate服务。在建造商中如下所示:

this.router.events.subscribe(val => {
    if (val instanceof ActivationEnd ) {
        let myVal = val.snapshot.params.lang;
        this.currentLang = myVal;
        this.translate.use(myVal);
        this.translate.setDefaultLang(config.defaultLang);
    }
});
我有一个已导入应用程序模块的共享模块。在共享组件中,一切正常:

<div [innerHTML]="'HOME.TITLE' | translate"></div>
共享模块:

imports: [
  CommonModule,
  RouterModule,
  TranslateModule.forRoot({
    loader: {
      provide: TranslateLoader,
      useClass: TranslateUniversalLoader,
    }
  })
],
exports: [
  HeaderComponent,
  TranslateModule
]
imports: [
  CommonModule,
  FormsModule,
  CustomersRoutingModule,
  SharedModule,
],
lazy-loaded.module:

imports: [
  CommonModule,
  RouterModule,
  TranslateModule.forRoot({
    loader: {
      provide: TranslateLoader,
      useClass: TranslateUniversalLoader,
    }
  })
],
exports: [
  HeaderComponent,
  TranslateModule
]
imports: [
  CommonModule,
  FormsModule,
  CustomersRoutingModule,
  SharedModule,
],
我的应用程序组件:

<!-- This is component of my shared.module and translation works fine here, but not in lazy loaded modules -->
<saz-header></saz-header> 
<router-outlet></router-outlet>

我刚刚忘记将提供程序添加到我的SharedModule中,如下所示:

providers: [
  RoutingService
]

很高兴你能成功,但为了完成:

1) 仔细检查提供服务的模块。一般来说,路由服务应该总是可访问的,并且与AppModule一起加载是有意义的,或者取决于您是否遵循John Papa建议的项目结构CoreModule

在您的情况下,在AppRoutingModule中导入服务可能是合乎逻辑的


2) 如果您确实有一个您希望延迟加载的服务,那么将该服务包含在一个独立的、简单的模块中可能是有益的,您可以在需要时延迟加载该模块(简单地说,一个只包含您可能需要或不需要的少量内容的小模块)

我感觉如果您想使用router.service,您可能必须将SharedModule导入其他模块。延迟加载的模块将无法访问它,除非它们导入您的SharedModule。就个人而言,我建议将routing.service可能移动到AppModule中。把它放在那里,或者放在一个CoreModule@N15M0_jk我已经将SharedModule导入到我的另一个惰性模块中。您所说的
将您的routing.service可能移动到您的AppModule中是什么意思
Hmmm,这是不寻常的。当我提到将routing.service可能移动到AppModule中时,我假设routing.service不是AppModule中的提供商。请分享你的AppModule、SharedModule和延迟加载的模块文件,这样我们就可以看到所有东西是如何导入的了。请参见
更新
部分。谢谢。Ops,我忘记在我的SharedModule组件中注入服务了。现在它工作得很好。谢谢,谢谢你的回答。但当我在AppModule中提供服务时,仍然在延迟加载的模块中,我无法访问该服务。我必须在SharedModule中提供它。请看这个演示:酷,很快就会查看它!给你,对不起,非常感谢。还有一个问题。我应该在AppModule或SharedModule中导入我的外部模块(在本例中为TranslateModule)?(我在自己的routing.service中使用TranslateService)