本人最近翻查阅读广发证券出品的《揭秘Angular2》,里面提到:
需要注意的是,Angular中没有模块作用域这个概念,只有应用程序级作用域和组件作用域。这种设计主要考虑模块的扩展性,一个应用程序通常由多个模块合并而成。在@NgModule里注册的服务默认就可在整个应用程序内可用。
也就是说,Angular中,有ModuleA, ModuleB,假如A配置了providers的服务,那么里面的服务不需要再次在B的providers里配置也能直接使用了。它们是共用一个实例。
(需要注意的是,对于延迟加载的Module而言,里面配置的providers则不能直接引用的)
所以,使用Angular的服务,最佳实践是:
1. 在根Module里配置系统共用的、工具类的服务,无需在各自业务模块里进行配置了
2. 对于业务相关的服务,则配置在业务组件本身的Component的providers里。单独使用一个实例。