Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 一个组件的订阅代码(setInterval)仍在运行,所以我退出了_Angular_Angular2 Observables_Subscribe - Fatal编程技术网

Angular 一个组件的订阅代码(setInterval)仍在运行,所以我退出了

Angular 一个组件的订阅代码(setInterval)仍在运行,所以我退出了,angular,angular2-observables,subscribe,Angular,Angular2 Observables,Subscribe,我有一个下标(用作setInterval),它在名为“coordinator component.ts”的组件中每10秒执行一次代码。在那之前一切都很好,我的问题是: 当我从一个url传递到另一个url时,订阅仍在运行,这不应该发生,因为这应该只在“协调器组件”的视图和组件中执行。我不知道它是否保存在缓存中,但我不知道如何解决这个问题。如我所见,您使用一个可观察的,当您subscribe()时,它返回一个Subscription,最佳做法是将Subscription存储到一个变量中,并在执行过程

我有一个下标(用作setInterval),它在名为“coordinator component.ts”的组件中每10秒执行一次代码。在那之前一切都很好,我的问题是:
当我从一个url传递到另一个url时,订阅仍在运行,这不应该发生,因为这应该只在“协调器组件”的视图和组件中执行。我不知道它是否保存在缓存中,但我不知道如何解决这个问题。

如我所见,您使用一个
可观察的
,当您
subscribe()
时,它返回一个
Subscription
,最佳做法是将
Subscription
存储到一个变量中,并在执行过程中取消订阅()
ngondestory()

您可以对可观察对象调用unsubscribe(),最好在Ngondestory期间对组件调用unsubscribe(),这是内存泄漏
export class YourComponent implements OnDestroy, OnInit {

  yourStoredSubscription: Subscription;

  // You subscribe to it somewhere in your code for example and it return a subscription
  ngOnInit() {
     this.yourStoredSubscription = this.yourSetInterval.subscribe();   
  }
  ngOnDestroy() {
    this.yourStoredSubscription.unsubscribe();
  }
}