Angular 角度数据/内存泄漏?未删除作用域服务和组件

Angular 角度数据/内存泄漏?未删除作用域服务和组件,angular,typescript,angular-module,Angular,Typescript,Angular Module,我在角度应用程序中遇到数据泄漏问题。考虑下面的例子: 在仅对经过身份验证的用户可用的RestrictedComponent中,我定义了一些SensitiveDataService作为提供者: @Component({ providers: [SensitiveDataService] }) export class RestrictedComponent {} 而且它似乎工作得很好-当我注销并作为另一个用户登录时,SensitiveDataService中的数据似乎在新的类实例上再次初始化

我在角度应用程序中遇到数据泄漏问题。考虑下面的例子:

在仅对经过身份验证的用户可用的
RestrictedComponent
中,我定义了一些
SensitiveDataService
作为提供者:

@Component({
  providers: [SensitiveDataService]
})
export class RestrictedComponent {}
而且它似乎工作得很好-当我注销并作为另一个用户登录时,
SensitiveDataService
中的数据似乎在新的类实例上再次初始化,但是。。。当我在Chrome devtools中拍摄内存堆快照时,我实际上可以看到有两个
SensitiveDataService
的现有实例在站点关闭之前一直保留整个数据

下面是内存堆中
队友服务示例的屏幕截图。队友
字段: 屏幕截图来自提前生产构建(关闭了代码uglificiation),所以这是最后一个可能出现类似问题的地方


更进一步——我可以看到作用域组件的行为完全相同——每次需要时都会创建新实例,但旧实例仍然存在于内存中。我希望这不是期望的行为,我已经看到了Angular repository中内存泄漏的一些公开问题,但我现在需要它工作——我可以在不手动清除所有数据的情况下实现它吗?也许我可以直接访问Angular DI存储,以便以某种方式删除未使用的实例?

删除组件中的提供程序:[SensitiveDataService]。 添加

@注射的({
providedIn:'根'
})

敏感数据服务
删除组件中的
提供程序:[SensitiveDataService]
。 添加

@注射的({
providedIn:'根'
})

敏感数据服务

您解决过这个问题吗?我现在也面临同样的问题。@Muh先生起初我们通过监听注销事件并手动清理所有敏感数据来解决问题。这是很多额外的工作,所以最近我们决定在注销时重新加载页面…非常感谢您的回答,我认为这是最安全/最简单的方法…这是一个已知的问题。我已经看到了这一点,甚至在去年添加了一条评论。我在这里寻找一个解决方案,而不是对这个问题的描述:你解决过这个问题吗?我现在也面临同样的问题。@Muh先生起初我们通过监听注销事件并手动清理所有敏感数据来解决问题。这是很多额外的工作,所以最近我们决定在注销时重新加载页面…非常感谢您的回答,我认为这是最安全/最简单的方法…这是一个已知的问题。我已经看到了这一点,甚至在去年添加了一条评论。在这里,我在寻找一个解决方案,而不是对这个问题的描述:P