Я думаю, вы должны сделать это немного по-другому.
, пожалуйста, посмотрите пример ниже и самую последнюю версию switchMap
:
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';
import {Injectable} from '@angular/core';
import {StoreState} from '@core/store';
import {select, Store} from '@ngrx/store';
import {getAuthToken} from '@v2/core/store/auth/auth.reducer';
import {iif, Observable, of} from 'rxjs';
import {switchMap, take} from 'rxjs/operators';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(protected readonly store: Store<StoreState>) {}
public intercept(request: HttpRequest<void>, next: HttpHandler): Observable<HttpEvent<void>> {
return this.store.pipe(
select(getAuthToken),
take(1),
switchMap(token =>
iif(
() => !token,
of(request),
of(
request.clone({
setHeaders: {
Authorization: `Bearer ${token?.accessToken}`,
},
}),
),
),
),
switchMap(clonedRequest => next.handle(clonedRequest)),
);
}
}