В моем угловом сервисе у меня есть сервис, возвращающий пользовательскую функцию отказа от подписки.
Если я отписываюсь напрямую, это называется, но если я отписываюсь через
.pipeUntil(this.destroy$)
пользовательская функция отмены подписки не вызывается.
Функция сервиса (сокращенно)
myObservableFunction(): Observable<any[]> {
return new Observable<any[]>((observer) => {
const sub = this.authService.doGetRequest(`myRoute`)
.subscribe(
(d) => {
observer.next(e)
},
(e) => observer.error(e)
);
return {
unsubscribe() {
sub.unsubscribe();
}
};
});
}
это вызывает sub.unsubscribe ():
this.myService.myObservableFunction()
.subscribe()
.unsubscribe()
это не так:
this.myService.myObservableFunction().pipe(takeUntil(this.destroy$)
.subscribe()
.unsubscribe()
$ destroy is Subject
который излучается так
ngOnDestroy() {
this.destroy$.next(true);
this.destroy$.unsubscribe();
}