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