首页 > 解决方案 > 在 Angular 中注销时重置服务

问题描述

我的应用程序中有一些服务包含我想在用户注销时重置的数据。

我有一个仅在用户登录时显示的父组件,因此如果我将这些服务包含在该组件装饰器的提供程序数组中,则每次用户注销时,该组件都会被销毁,并且服务实例也会被删除. 如果另一个用户登录,这个父组件将使用新的服务实例再次创建,从而满足我的需求。

这很好用,但是如果我使用需要来自这些服务实例中的一个(或多个)数据的解析器,我将如何注入它们?也许我对重置这些服务数据的想法没有经过深思熟虑,应该使用替代方案,但我发现它非常干净和无缝,因为当我需要包含另一个具有需要在注销时重置数据的服务时,我只需将其添加到父组件提供程序数组中。

更新:在阅读了大量文档后,我最终了解了angular 中不同类型的分层注入器,因此我创建了一个更具体的新问题。我会留下这个以供参考。

标签: angularangular-dependency-injection

解决方案


您可以使用角度注入器获取服务实例:

constructor(private injector:Injector) {
  injector.get(MyService);
}

您可能想查看依赖注入令牌: Docs


推荐阅读