Глядя на примеры кода, я часто вижу случай, когда наблюдаемые внутри сервисов не отписываются.
Вот пример:
export class AuthGuard implements CanActivate {
private isLoggedIn: boolean;
private isLoggedIn$: Observable<boolean>;
constructor(private authService: AuthService, private router: Router) {
this.isLoggedIn$ = this.authService.isLoggedIn();
this.isLoggedIn$.subscribe(res => {
if (res) {
this.isLoggedIn = true;
}
else {
this.isLoggedIn = false;
}
});
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (this.isLoggedIn) {
return true;
}
else {
this.router.navigate(['login']);
return false;
}
}
}
Есть ли причина, по которой вы не отпишетесь от наблюдаемого this.isLoggedIn$ в этом случае? Или приведенный выше пример просто плохой код, приводящий к утечкам памяти?