angular - 如何从自定义 rxjs 运算符中调用角度服务?
问题描述
我正在编写一个自定义 rxjs 运算符来处理记录 HttpClient 响应错误。我的直觉是将自定义运算符放在自己的文件中,我只是在需要的地方包含它。然而,这使它脱离了“Angular 世界”,那么它如何访问我的 Angular 日志服务呢?
解决方案
拦截器是一种可能的解决方案。另一种选择是创建自己的 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 调用都通过这个集中式集线器。
推荐阅读
- php - 为什么来自 phpinfo() 的 o/p 的指令“配置文件(php.ini)路径”和“加载的配置文件”显示完全不同的位置?
- javascript - javascript 从 firebase 检索每个数据
- visual-studio-code - 当我格式化代码时,多行变成一行
- algorithm - BFS 与启发式
- javascript - Electron 将创建者窗口 ID 传递给新的 BrowserWindow
- html - 在 Android Studio 中通过文件命名加载 HTML 文件
- mean-stack - 单节点模块平均堆栈
- amazon-web-services - 我们可以在 AWS 中更改 SSH 证书的区域或从一个区域移动到另一个区域吗?
- html - Plotly Dash 不能将 div 放在同一行
- javascript - 否定时未正确分配在 process.env (process.env.FLIP_FLOP) 上设置的环境变量 (!process.env.FLIP_FLOP)