【问题标题】:Angular @Unsubscribe decorator for @Component@Component 的 Angular @Unsubscribe 装饰器
【发布时间】:2018-01-19 13:17:41
【问题描述】:

您可能都知道您需要取消订阅 Observables 以防止内存泄漏

我不明白为什么不为使用 Observables 的组件类创建 @Uncsubscribe 装饰器,它会遍历所有属性并取消订阅 destroy.

甚至更多糖:扩展 @Component 装饰器以添加此类行为。

现在问题:这种解决方案可能存在哪些缺陷?

【问题讨论】:

  • 为什么不直接创建 @Uncsubscribe 装饰器 - 如何?你能展示一下吗?

标签: angular rxjs


【解决方案1】:

其实有一篇关于this的好文章。

这里是概述

@AutoUnsubscribe(["one$", "two$"])
class TestComponent {
  ...
}

其中 one$ 和 two$ 是你的 observables,它会在 NgOnDestroy 中自动取消订阅

如果您使用 AOT,请确保在组件中添加 NgOnDestroy。见this

【讨论】:

  • 如果我们不直接声明,你确定angular会在aot编译中运行ngOnDestroy方法吗? AOT 一直是我们的问题。那么拥有一个takeUntil 和这样的实现有什么区别。在这两种情况下,我们都必须在组件上声明 ngOnDestroy 挂钩
  • @yurzui 感谢您指出这一点。我收回这个实现没有陷阱。使用 AOT 可能是此实现的一个问题。我将对此进行进一步调查
  • @yurzui 我相信原作者已经找到了解决方案。 github.com/NetanelBasal/ngx-auto-unsubscribe。虽然我现在无法彻底测试。
  • 见例子// If you work with AOT this method must be present, even if empty!
猜你喜欢
  • 1970-01-01
  • 2019-02-23
  • 2017-08-24
  • 2016-11-24
  • 2017-04-20
  • 1970-01-01
  • 2017-02-01
  • 2023-03-25
相关资源
最近更新 更多