保存角度服务的单例实例的实践

时间:2017-07-08 09:33:03

标签: angular dependency-injection angular-services

当我第一次了解angular-redux库时,我认为库中最吸引人的部分是@select装饰器,这意味着我不必注入store service每次我想从商店中选择。

这让我想知道 - 装饰师如何获得对该服务的访问权? 我研究了源代码,偶然发现了@selectNgRedux (the store service)代码。

显然,初始化服务时会保存static instance服务,decorator会访问此实例。

我想知道这种做法是否可以接受,因为我已经喜欢这个想法,而且我自己也用它来为我的服务创建decoratorsrxjs operators,但是保存单身人士的想法对我来说仍然很奇怪,感觉就像一个奇怪的黑客。

同样,我希望您对这种做法的可接受程度持怀疑态度,以及是否有办法使用Angular Dependency Injection来避免这种做法。

感谢阅读!

1 个答案:

答案 0 :(得分:0)

根据定义,NgModules中定义的服务是惰性单例。这意味着如果您不打算使用组件的providers部分覆盖服务,则可以安全地保存对服务实例的引用。

主要缺点是可测试性问题,在这种情况下,您必须支付这个价格才能方便使用。