在组件的 onDestroy 时处理可观察对象和订阅
Taking care of observables and subscriptions upon components' onDestroy
当组件被销毁时,angular 是否会自动 "handles/closes/completes" 组件使用的可观察对象及其相关订阅?
或者我应该在组件的 onDestroy 中明确处理它们吗?
根据 的已接受答案,至少在 2017 年 4 月之前需要手动处理可观察量。
不知道现在是不是这样
编辑 1
在 angular 文档中,我发现 this pipe 似乎可以解决问题,但我不确定如何在我的组件中使用它。
开发人员应该将可观察对象存储在 属性 中,而不是在 subscribe.next 中设置 属性。
如果我使用异步管道并将 属性 设置为可观察对象,下面的组件模板会变成什么样子?
<h1>{{property.title}}</h1>
<p>{{property.description</p>
您不需要取消订阅所有可观察对象。
您应该取消订阅:
- 表单控件
- 自定义可观察对象,基本上或您从主题等创建的对象。
- 一般的第三方观察
您无需取消订阅:
- HttpCLient
- 路由器
- 有些运算符像 take
- 使用异步管道
额外资源:
https://www.reddit.com/r/Angular2/comments/66v9yy/so_we_should_never_really_unsubscribe_from/
https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87
当组件被销毁时,angular 是否会自动 "handles/closes/completes" 组件使用的可观察对象及其相关订阅?
或者我应该在组件的 onDestroy 中明确处理它们吗?
根据
不知道现在是不是这样
编辑 1
在 angular 文档中,我发现 this pipe 似乎可以解决问题,但我不确定如何在我的组件中使用它。 开发人员应该将可观察对象存储在 属性 中,而不是在 subscribe.next 中设置 属性。 如果我使用异步管道并将 属性 设置为可观察对象,下面的组件模板会变成什么样子?
<h1>{{property.title}}</h1>
<p>{{property.description</p>
您不需要取消订阅所有可观察对象。
您应该取消订阅:
- 表单控件
- 自定义可观察对象,基本上或您从主题等创建的对象。
- 一般的第三方观察
您无需取消订阅:
- HttpCLient
- 路由器
- 有些运算符像 take
- 使用异步管道
额外资源:
https://www.reddit.com/r/Angular2/comments/66v9yy/so_we_should_never_really_unsubscribe_from/
https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87