首页 > 解决方案 > 如果在 2 个延迟加载的模块中使用 Angular 服务,为提供的设置设置什么

问题描述

由于 Angular 6 推荐的方法是使用providedIn.Injectable

但是如果需要在 2 个延迟加载的模块中使用服务怎么办?
创建共享模块然后在两个延迟加载的模块中导入共享模块是否仍然是最佳实践?

像这样的东西(遵循这个链接以避免循环引用警告):

//Shared module
@NgModule({})
export class SharedModule { }

//Shared service
@Injectable({
  providedIn: SharedModule
})
export class SharedService { }


//Lazy loaded modules A and B
@NgModule({
  imports: [SharedModule]
})
export class LazyModuleA { }

@NgModule({
  imports: [SharedModule]
})
export class LazyModuleB { }

根据第一个答案进行编辑:将有相当(40-80)个服务。

标签: angular

解决方案


我不认为这是一个好主意。因为您在注入器中注入服务以应对可能发生或可能不会发生的情况。当您在 ShareModule 中注入此服务时,此服务在您的应用程序处于活动状态之前一直处于活动状态。让我们想象一个情况你有很多这样的场景,你在注入器中注入了很多消耗内存的服务。我认为最好在lazyLoad 模块级别注入此服务。


推荐阅读