我在Angular 5中有一个工作拦截器。它已在App.module的提供程序中注册,并正确拦截了从应用程序发出的所有请求。
问题是它不会拦截从应用程序使用的库发出的请求。
我正在使用一个开源库(NGX-Jsonapi),需要拦截器在库向后端发出的每个请求中提供一个令牌。
有人遇到同样的问题吗?
编辑:该库使用HttpClient。
答案 0 :(得分:1)
在版本4.3中,angular添加了一项新服务HttpClient
对于版本5,angular弃用了旧服务Http
。
拦截器仅适用于HttpClient
。
您可以确定您所拥有的未被拦截的图书馆使用旧的Http
。请注意,Http
可能会被角度6删除!
如果您想确保拦截器拦截每个调用,您需要将依赖项升级到最新版本。
答案 1 :(得分:0)
最后,我在Angular HttpInterceptor documentation usage notes中找到了解决方案:
要在整个应用中使用相同的HttpInterceptors实例, 仅在您的AppModule中导入HttpClientModule,然后添加 根应用程序注入器的拦截器。如果导入 跨不同模块的HttpClientModule多次(例如, 在延迟加载模块中),每次导入都会创建新的 HttpClientModule,它将覆盖 根模块。
我正在将HttpClientModule导入正在发出hte请求的延迟加载模块中。解决此问题后,所有内容都可以发挥作用。