【发布时间】:2019-06-28 10:17:50
【问题描述】:
我正在编写一个自定义 rxjs 运算符来处理记录 HttpClient 响应错误。我的直觉是将自定义运算符放在自己的文件中,我会在需要的地方包含它。但是,这使它脱离了“Angular 世界”,那么它如何访问我的 Angular 日志服务呢?
【问题讨论】:
-
为什么不使用拦截器来记录 HttpClient 中的错误?还是要添加条件错误日志记录。
-
是的,它需要比拦截器提供的更多上下文。例如,如果它重试并成功,我不希望它记录。或者,如果一个 API 调用失败,但第二个 API 调用检索到数据。
-
您可能会尝试破解它并让拦截器功能成为服务类的一部分。这样,您可以在操作员服务中注入日志服务,但也需要您在使用它的任何地方注入实际的操作员。此外,this 可能无法在运算符内部正确绑定,除非您以 ES6 方法的方式执行它:operator: () => {} 而不是 operator() {}。这只是我想到的一个黑客。不确定它是否正确或有帮助。