Вы хотите перед каждым запросом ходить на бэкенд за токеном, или что? Непонятно что происходит тут.
У меня интерцептор на токен сделан максимально просто.
export class AuthInterceptor implements HttpInterceptor {
constructor(
private authState: AuthState,
) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle( req.clone({
headers: req.headers.set('Authorization', `Bearer ${this.authState.getValue().token}`),
}));
}
}
т.е. из сервиса только забирается токен, без лишних подписок и запросов.
Первый токен получается из запроса при старте приложения, обновляется в самих запросах.
Если нет синхронного метода получения, то надо cделать
this.authService.getAuthorizationToken().pipe(
take(1),
switchMap(token => next.handle(this.makeNewRequest(token))
)
Вот этого вот
tap(token => this.authService.token = token),
вообще в интерцепторе быть не должно.