问题描述: Angular 库中提供的 HttpInterceptor 在 Angular 应用中无法工作。
解决方法:
app.module.ts
)中正确导入和配置 HttpClientModule
。import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
HttpClientModule
],
...
})
export class AppModule { }
HttpInterceptor
接口。import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class CustomHttpInterceptor implements HttpInterceptor {
intercept(req: HttpRequest, next: HttpHandler): Observable> {
// 在这里可以对请求进行处理,比如添加请求头等操作
// 修改后的请求需要通过 next.handle() 方法传递给下一个拦截器或 HttpClient
return next.handle(req);
}
}
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { CustomHttpInterceptor } from './custom-http-interceptor';
@NgModule({
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: CustomHttpInterceptor,
multi: true
}
],
...
})
export class AppModule { }
这样,自定义的 HttpInterceptor 就会被应用到所有的 HTTP 请求中。
注意:如果应用中有多个 HttpInterceptor,它们会按照提供的顺序依次执行。如果需要改变拦截器的执行顺序,可以调整它们在 providers
数组中的顺序。
希望以上解决方法对您有帮助!