из switchMap нужно возвращать Observable
в тапе ты вызваешь свитчмап функцию)
слишком много tap-ов, в первом случае отфильтровать далее в switchMap вернуть Observable и на уровне свича сделать в тапе логику
а вообще для такого можно написать Interceptor
примерно так canActivate(): Observable<boolean> { return this.authService.isAuthenticated().pipe( switchMap((authenticated) => authenticated ? of(true) : this.refreshToken.refresh()), map((item) => !!item), tap((result) => result || this.router.navigate([['auth/login']])), ); }
Обсуждают сегодня