首页 > 解决方案 > 如何从自定义 rxjs 运算符中调用角度服务?

问题描述

我正在编写一个自定义 rxjs 运算符来处理记录 HttpClient 响应错误。我的直觉是将自定义运算符放在自己的文件中,我只是在需要的地方包含它。然而,这使它脱离了“Angular 世界”,那么它如何访问我的 Angular 日志服务呢?

标签: angularrxjs

解决方案


拦截器是一种可能的解决方案。另一种选择是创建自己的 http 服务,我更喜欢

class Http{
   constructor(private http:HttpClient){}
   logging = (res)=>tap(res=>log(res))
   preIntercept(options)=>options
   post(options){ 
      options=preIntercept(options)
      return http.post(options).pipe(logging)
   } 
}

它只是为您提供了更大的灵活性,并且代码更加明确。使用默认拦截器会遇到很多if else情况,因为每个 http 调用都通过这个集中式集线器。


推荐阅读