上下文
假设我有一个角2特征模块Movies和一个特征模块Dashboard。Movie模块具有由Movies模块公开/提供的服务movies.service。
现在,Dashboard模块中的一个组件也希望使用此服务来显示电影的子集。
问题
您是应该导入该组件中的服务并使用该服务,从而有效地使Dashboard模块依赖于Movies模块,还是应该将服务移动到Shared模块并将其导入两个功能模块中?
依赖于另一个功能模块的特性模块让我感到有点奇怪,但是如果您通过每个特性模块中的Shared模块导入服务,那么服务不是会被实例化两次吗?
那么您可以将它添加到核心模块中,以确保它只导入一次。但这不是一个核心服务,所以这感觉更奇怪!
阿格,我觉得我在制造一个不存在的问题。有人能让我放松一下吗..thx :P
发布于 2016-12-04 12:44:45
我会把movie.service放到movie.module里。如果该模块不是延迟加载的,那么其他模块可以使用可注入的服务。使用延迟加载会使事情变得复杂,因为这样就会创建一个新的注入上下文。
但是,如果您决定将您的服务放入sharedModule,它也应该工作,但这是危险的。您不会一次拥有两个服务实例,因为根注入器总是接受最后一个初始化的实例,只是有一个延迟加载的模块导入了这个共享模块。
角层指南告诉我们,将在CoreModule中的整个应用程序中共享其实例的单例服务。
欲了解更多信息,请阅读角样式指南:https://angular.io/styleguide#!#04-11
https://stackoverflow.com/questions/40936639
复制相似问题