取消订阅queryparammap-这有必要吗?

问题描述

在Angle的ActivatedRoute中四处寻找订阅管理的方式与对Angular文档的引用相同,该声明指出您不必取消ActivatedRoute可观察项的订阅,因为它被路由器干净地撕毁了。

但是,在查看文档本身时,不再有此部分的说明。我尝试使用finalize来测试可观察对象在销毁组件时是否已完成:

this.activatedRoute.queryParamMap.pipe(finalize(() => console.log('done')).subscribe()

但是,从未调用过控制台日志。我不确定这是否是因为可观察对象只是被直接摧毁,还是只是保持打开状态。

是否有必要管理ActivatedRoute订阅生命周期?

解决方法

每个ActivatedRoute都绑定到一个路由组件,并且当路由发生更改时,所显示的当前组件及其绑定的ActivatedRoute都将被销毁,因此这就是为什么您不会收到完整通知的原因。

我在此answer中对此做了详细说明。