【发布时间】:2020-04-05 20:44:24
【问题描述】:
使用 Angular,我有一个 在组件中提供的服务。服务有一个 observable,并且组件订阅了这个 observable。我曾期望我不需要取消订阅订阅/可观察的服务,因为服务应该与组件一起销毁,因此也应与可观察的一起销毁。然而,快速测试表明 observable 是活着的。
在我的视线之外发生了什么? observable 是否在服务之外运行?或者当提供服务的组件被破坏时,服务实际上并没有被破坏?
【问题讨论】:
-
当组件被销毁时服务不会停止存在。 Useful resource
-
是的,为什么服务也要销毁?服务默认是单例的,不是每次注入都生成
-
@canbax 在组件级别提供的服务被破坏。这意味着他们可以实现 ngOnDestroy 钩子。但这并不意味着它会自动清除所有订阅,特别是如果我们在内部使用 setInterval 创建 Observable 并且不使用 clearInterval 返回 clear 方法
-
@yurzui 你是对的。默认情况下,它们在根级别提供。我不太了解在组件级别提供它们。
-
@canbax 我在问题
In my component中注意到...providers: ...