Ответ 1
В соответствии с этим предложением на GitHub мы внедрили простой заголовок для определения запросов, которые не должны быть перехвачены. В перехватчике:
export const InterceptorSkipHeader = 'X-Skip-Interceptor';
@Injectable()
export class SkippableInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (req.headers.has(InterceptorSkipHeader)) {
const headers = req.headers.delete(InterceptorSkipHeader);
return next.handle(req.clone({ headers }));
}
... // intercept
}
}
Затем всякий раз, когда вы хотите пропустить перехват для определенного запроса:
const headers = new HttpHeaders().set(InterceptorSkipHeader, '');
this.httpClient
.get<ResponseType>(someUrl, { headers })
...
Обратите внимание, что с помощью этого метода служба, а не перехватчик, выбирает, когда применяется логика перехватчика; это означает, что службы должны "что-то" знать о перехватчиках в вашем приложении. В зависимости от вашего варианта использования, может быть лучше, чтобы перехватчики решали, когда применять логику.