问题描述
在Angle的ActivatedRoute
中四处寻找订阅管理的方式与对Angular文档的引用相同,该声明指出您不必取消ActivatedRoute
可观察项的订阅,因为它被路由器干净地撕毁了。
但是,在查看文档本身时,不再有此部分的说明。我尝试使用finalize
来测试可观察对象在销毁组件时是否已完成:
this.activatedRoute.queryParamMap.pipe(finalize(() => console.log('done')).subscribe()
但是,从未调用过控制台日志。我不确定这是否是因为可观察对象只是被直接摧毁,还是只是保持打开状态。
是否有必要管理ActivatedRoute
的订阅生命周期?
解决方法
每个ActivatedRoute都绑定到一个路由组件,并且当路由发生更改时,所显示的当前组件及其绑定的ActivatedRoute都将被销毁,因此这就是为什么您不会收到完整通知的原因。
我在此answer中对此做了详细说明。