当你在组件中订阅查询参数时,你需要取消订阅吗?我试图避免内存泄漏。
订阅变量为取消订阅()
subscription$: Subscription
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.subscription$ = this.route.queryParams.subscribe(
(params: any): void => {
// ... Do stuff here ...
}
)
}
ngOnDestroy() {
if (this.subscription$ !== undefined || this.subscription$ !== null) {
this.subscription$.unsubscribe()
}
}
取消订阅()
的无变量订阅
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.queryParams.subscribe(
(params: any): void => {
// ... Do stuff here ...
}
)
}
哪一个是更好的解决方案?
当组件被销毁时,ActivatedRoute会取消订阅其所有订阅者。
您可以查看文档:https://angular.io/guide/router#!#重用
当订阅组件中的可观察对象时,您几乎总是安排在组件被销毁时取消订阅。
有一些例外的可观察对象不需要这样做。ActivatedRoute可观察对象是例外之一。
ActivatedRoute及其可观察对象与路由器本身隔离。当不再需要路由组件并且注入的ActivatedRoute随其一起死亡时,路由器会销毁路由组件。
你可以找到这个问题作为参考
Angular是否有必要取消订阅this. tivatedRoute订阅
但是我想说,每当您订阅某事时取消订阅总是一个很好的做法。它们有多种方法可以取消订阅,我们可以只使用一个额外的变量进行订阅
我总是喜欢退订在这种情况下以及