kittencup / angular2-ama-cn

angular2 随便问
692 stars 101 forks source link

关于forRoot()和单例服务的一些疑问 #274

Open gsbybb opened 6 years ago

gsbybb commented 6 years ago

请教大家一个问题。

看文档说:当我们需要让一个module中的服务是应用级服务就需要调用forRoot() 方法, 这个方法是返回一个ModuleWithProviders。但是我发现RouteModule.forChild() 返回的也是一个ModuleWithProviders。所以对如何提供一个全局的单例服务的方法产生了疑惑。 我们可以通过在根模块注入这个服务让它变成单例的,但是如果我的sharedModule中的某个指令要依赖一个单例服务我该怎么做?就比如我写了一个模块用来根据权限控制页面的元素是否显示,这个模块包含一个指令和一个服务,指令会依赖这个服务获取权限,因为这个指令我可能在每个页面都会用到,所以我可能需要多次导入这个模块,但是我还是希望模块中的这个服务是单例的。那么我现在应该怎么做才能让这个服务是单例的?

谢谢!

CK110 commented 6 years ago

只在最顶层appmodule 注入服务,这个服务是单例 在其他module 中可以任意使用该服务,因为服务是不受module影响的,会从自身开始一直向上找到符合的