Observable.of在HttpClient Interceptor

时间:2017-12-04 13:28:50

标签: angular rxjs angular-http-interceptors

问题

Observable.of转换为可观察序列的参数意味着它可以用作对另一个订阅的Observable的模拟响应。 但是现在,似乎Observable.of在从拦截器调用它时不起作用,因为订阅它的方法没有执行

预期行为:

当使用给定数据调用Observable.of时,HttpClient应该将数据返回给已经订阅它的方法

演示

Live Demo (打开DevTools控制台读取日志)

有一个服务(mock.service.ts)使用HttpClient生成模拟HTTP get请求,请求到达mock.interceptor.ts并且它希望使用{{1来回答模拟数据(意味着不希望请求通过网络传输),Observable.ofmock.service中有一个订阅者正在等待app.component的响应。没有数据到达订户,也没有错误。

关于如何实现与HttpClient一起使用的拦截器的任何想法?

2 个答案:

答案 0 :(得分:3)

尝试将拦截器拦截方法中的return语句更改为:

return Observable.of( new HttpResponse<any>( { body: mockData }))

Live Demo

答案 1 :(得分:1)

Observable.of被取代,改用Observable.create

return Observable.create((ob) => {
      ob.next(new HttpResponse<any>({body: data}));
});