Angular 2 从其他功能模块导入服务

Angular 2 import service from other feature module

上下文

假设我有一个 Angular 2 功能模块 Movies 和一个功能模块 DashboardMovie 模块有一个服务 movies.service,它是 Movies 模块的 exposed/provided。

现在 Dashboard 模块中的一个组件也想使用此服务来显示电影的子集。

问题

您应该只在该组件中导入服务并使用该服务,有效地使 Dashboard 模块依赖于 Movies 模块,还是应该将服务移动到 Shared 模块并将其导入两个功能模块?

一个功能模块依赖另一个功能模块我觉得有点奇怪,但是如果你在每个功能模块中通过Shared模块导入服务,服务不会被实例化两次,一次是为了每次进口?

那么你可以将它添加到核心模块以确保它只导入一次..但它不是核心服务所以感觉更奇怪!

Arg,我觉得我正在制造一个不存在的问题..有人可以放松一下我的大脑..thx :P

我会将 movie.service 放入 movie.module。如果该模块不是延迟加载的,则可注入服务可用于其他模块。使用延迟加载,事情会变得复杂,因为会创建一个新的注入上下文。

但是,如果您决定将您的服务放入 sharedModule 中,它也应该可以工作,但是这很危险。您不会一次拥有两个服务实例,因为根注入器将始终采用最后一个初始化的实例,除非有一个延迟加载的模块导入此共享模块。

angularstlye 指南告诉我们,将其实例将在整个应用程序中共享的单例服务放在 CoreModule 中。

有关更多信息,请阅读 angular 风格指南:https://angular.io/styleguide#!#04-11