【发布时间】:2018-04-11 22:09:49
【问题描述】:
我正在使用 @ngrx/store 从 store 中获取令牌并将其放置在 HTTP 标头中,我尝试使用 flatmap mergeMap 但它们都不断重复 http 请求,当我使用 take(1)它继续循环请求并挂起,这就是我所拥有的:
@Injectable()
export class AuthInterceptorService implements HttpInterceptor {
token$: Observable<string>;
constructor(private readonly store: Store<fromRoot.State>) {
this.token$ = store.select(fromAuth.getToken);
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return this.token$
.map(token => {
if (token) {
request = request.clone({setHeaders: {Authorization: `Bearer ${token}`}});
}
})
.mergeMap(() => next.handle(request));
}
}
【问题讨论】:
-
您可能只需要使用 switchMap 并通过流实际传递您修改后的请求。
标签: angular rxjs angular-http-interceptors ngrx-store-4.0