angular2 HttpClient中的拦截器不起作用?
1.我按照angular官方文档实现了httpclient发出http请求。文档链接
2.我尝试按文档在项目中实现拦截器,这是我的代码:
Universal.Interceptor.ts
import { Injectable, Inject,Injector, Optional } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs/observable';
import { StorageService } from '../../shared/storage.service';
import { enable, destroy } from 'splash-screen';
import 'rxjs/add/operator/do';
@Injectable()
export class UniversalInterceptor implements HttpInterceptor {
private _StorageService: StorageService;
constructor(private injector: Injector) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log(req)
return next.handle(req);
}
}```
app.module.ts
...
**import { HTTP_INTERCEPTORS } from '@angular/common/http';**
**import { UniversalInterceptor } from './core/Interceptor/Universal.Interceptor';**
@NgModule({
declarations: [
AppComponent
],
...
**providers: [{ provide: HTTP_INTERCEPTORS, useClass: UniversalInterceptor, multi: true }],**
bootstrap: [AppComponent]
})
}
项目的http请求还是正常的,但拦截器的console.log没有打印,项目也没有报错,是否引入少了内容?Universal.Interceptor.ts文件是我手动创建的,是否跟这个有关系?有没有使用这个拦截器的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你好,升级到4.3以后,新多出个HttpClient模块,如果要使用拦截器,需要,将老的http改为,HttpClient.
相关代码:
我猜是你的拦截器并没有被使用。参考如下:
然后在app.module.ts中
有可能是你的路由懒加载的问题,在路由加载的第一个组件是有作用的,你可以试一下
这是我的拦截器: