强制一个服务销毁?

3
我正在使用 Angular 2+。
作为 component 的 ngOnDestroy 的一部分,我想删除一个 service 实例。是否可能?
有人知道如何做吗?
当然,下一次加载 component 时,我想重新创建服务,然后在 component 销毁时销毁服务。
编辑:
我的目标是为每个 component 创建一个专用的 web socket。当 component 销毁 (ngOnDestroy) 时,断开 websocket 的连接。

1
你为什么想要摧毁它? - lin
请使用angularjs标签来表示1.X版本,而使用angular标签来表示2+版本(我已经重新打了标签)。 - Alon Eitan
4
我认为,如果你将服务提供者从模块级别提升到组件级别,你就会出现这种行为。 - jonrsharpe
2
为什么不创建一个充当工厂的服务?注入它并让它构建您想要在组件生命周期内使用的服务实例。如果这不能解决您的问题,您需要澄清您实际上正在尝试做什么或者为什么想要这样做。 - Igor
1个回答

15

我假设您的模块提供程序数组包含该服务。 从中删除它,只需将其限定于组件即可:

@Component({
  selector: 'yb-page',
  providers: [ServicePerComponent]
})

这基本上将阻止Angular为该服务创建一个单例。相反,它将为每个组件创建一个新的服务。因此,一旦该组件失效,您可以在onDestroy中运行服务的清理逻辑。

更多信息请参见: https://angular.io/guide/hierarchical-dependency-injection


这就是它。我这样做,它完全符合我的要求!太棒了。 - Charlie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接