提问者:小点点

Angular2处理非组件类中的订阅


我对Angular2中的订阅处理有一个高级问题。我最近读了很多关于糟糕的订阅处理如何导致代码中的内存泄漏,因为没有正确取消订阅。

@Components的一个简单解决方案是满足周围的所有订阅并在ngOnDestroy生命周期事件中处理它们。

但是,对于不是@Component的一部分并且有订阅的控制器,正确取消订阅的最佳方法是什么?目前,我正在考虑让控制器公开订阅或它自己的onDestroy方法,但这感觉并不容易/通用,所以我很想听听其他选项/意见。

谢谢!

编辑:澄清这不是服务问题,而是控制器问题。


共1个答案

匿名用户

  1. 当您在角上下文之外时,不要在角绑定流上使用订阅,这只会导致您陷入混乱的境地。
  2. 尽量避免手动订阅。尤其是在组件中!在90%的情况下不需要手动订阅。

在大多数情况下,您的应用程序只需要为当前显示在屏幕上的信息流动数据-

您仍然可以在角上下文之外使用实用程序类来执行一些数据计算和其他逻辑,但是将这些方法嵌入流中或让它们扩展现有流,但不要在那里进行任何手动订阅。

如果这种情况真的存在,这是有争议的,但假设它确实存在:这是一个服务的典型案例-