什么时候销毁注入到对话框中的服务?

When gets a service destroyed that was injected into a dialog?

我编写了一个服务并将其注入到我的对话框中。我希望在关闭对话框时调用服务的 ngOnDestroy() 函数。但事实并非如此。

所以我想知道 ngOnDestroy() 什么时候会被解雇?
如果我希望在对话框关闭时终止我的服务订阅,我该如何取消订阅?

这是 stackblitz 示例:https://stackblitz.com/edit/angular-bf1taz

由于您在 "services" 数组中的 app.module.ts 中提供了服务,因此您的服务将是所有组件的全局实例。这是经常需要的,因为您经常使用 Service 在组件之间存储和通信数据,并且不希望在使用它的组件被销毁时丢失这些数据。

如果您希望拥有不同的服务实例(请谨慎使用),您需要限制您的提供商。

参考 the docs 了解信息。

如果你想重置你的服务,你可以在你的服务中有类似重置功能的东西,它会在你之后手动清理并在你的对话框中调用 onClose。