当前位置: 首页 > 知识库问答 >
问题:

Angular组件被销毁后仍在监听订阅[重复]

姬雪松
2023-03-14

角度5

我遇到的问题是,当我离开一个组件时,该组件仍在监听服务订阅更新并对其采取行动。

export class GlobalVarsService {
  private selectedDepartment = new BehaviorSubject<number>(null);
  selectedDepartment$ = this.selectedDepartment.asObservable();

...
}
ngOnInit() {
     this.globalVarsService.selectedDepartment$.subscribe( selectDepartment => {
        this.refreshReportData();
    });
}

共有1个答案

申屠涛
2023-03-14

是的,您必须在ngOnDestroy中取消订阅,但如果您使用异步管道,它将自动处理

import { Subscription } from "rxjs/Subscription";
private subscription: Subscription ;
ngOnInit() {
 this.subscription = this.globalVarsService.selectedDepartment$.subscribe( selectDepartment => {
    this.refreshReportData();
});
}

ngOnDestroy() {
  this.subscription.unsubscribe();
}
 类似资料:
  • 问题内容: 我试图弄清楚为什么一旦尝试在线程完成后再次运行线程,此代码就会崩溃。 我第一次单击“开始5个线程”,它运行正常并完成。但是,如果我再次单击它。整个程序崩溃,我得到QThread:线程仍在运行时被销毁错误 可以在网上找到此代码。我正在尝试从中学习。 问题答案: 通过让他作为父母自己来解决这个问题。您必须更改: 至:

  • 在本文中,运算符用于订阅排序和分页事件。函数看起来是这样的: 我们是否需要保留订阅并在组件被销毁时调用unsubscribe?

  • 例如: 我是否需要取消订阅此订阅?我问这是因为我不知道Angular是否处理它本身。另外,请求是一次性的,而不是连续的。我倾向于认为我不需要。你有什么想法? 根据下面的帖子:Angular/RXJS,我什么时候应该取消订阅'subscription' RxJS处理一次性订阅,但我在他们的文档中没有找到任何东西。

  • 本文向大家介绍vue 组件销毁并重置的实现,包括了vue 组件销毁并重置的实现的使用技巧和注意事项,需要的朋友参考一下 方法1 当数据变更后,通过watch 监听,先去销毁当前的组件,然后再重现渲染。使用 v-if 可以解决这个问题 方法2 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我有一个片段,它设置一个列表视图,并创建一个处理程序来定期更新列表视图。然而,看起来处理程序在片段被销毁后仍然运行。 以下是代码。 在被销毁后更新会导致应用程序崩溃。如何在被销毁时使停止?我还想知道如果应用程序的任何暂停对也有什么影响。