Angular 2 从其他功能模块导入服务
Angular 2 import service from other feature module
上下文
假设我有一个 Angular 2 功能模块 Movies
和一个功能模块 Dashboard
。
Movie
模块有一个服务 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
上下文
假设我有一个 Angular 2 功能模块 Movies
和一个功能模块 Dashboard
。
Movie
模块有一个服务 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