Невозможно отказаться от подписки на подписку, если она используется в общедоступном методе, а не в ngOnDestroy.
Если есть наблюдаемый интервал rxjs, который используется для опроса API. onNgInit Я подписываюсь на наблюдаемое следующим образом:
Class .. {
pollingSubscription: Subscription;
ngOnInit() {
startPolling();
}
// when this gets triggered my polling subscription stops
ngOnDestroy() {
if (this.pollingSubscribe) {
this.pollingSubscription.unsubscribe();
}
}
startPolling() {
const pollingInterval: Observable<any> = observable.interval(3000).startWith(0);
this.pollingSubscription = pollingInterval.subscribe( _ => {
this.store.dispatch(// trigger my Action);
});
}
// when this gets triggered on a click event my polling subscription still keeps polling.
stopPolling() {
if ( // condition true) {
// on this condition stop polling, FYI this line does get triggered,
// but there is no effect, it still keeps subscribed.
this.pollingSubscription.unsubscribe();
}
}
}
Что-то не так, что я делаю в публичной функции stopPolling (). Как мне отказаться от подписки на условие, которое еще активно для данного компонента.
Спасибо.
this.pollingSubscription.unsubscribe
вызывается вstopPolling
? Например, поместивconsole.log
сразу после этой строки. - person ConnorsFan   schedule 30.08.2018startPolling
не вызывается несколько раз откуда-то еще? - person ConnorsFan   schedule 30.08.2018