Catch Angular HttpClient中的返回值

时间:2017-09-18 16:26:03

标签: angular typescript observable

我正在尝试创建一个通用服务来从服务器获取一些设置。当发生错误时,我想捕获此错误并返回默认值(本地我有一个默认配置,应该在发生错误时使用)。

由于我使用Angular 4.3.6,我可以使用新的HttpClientModule

代码:

/**
  * Fetches the map settings
  * @returns { Observable<MapConfiguration> }
  */

public getMapConfiguration(): Observable<MapConfiguration> {
  return this.http.get<MapConfiguration>(MapService.MAPSETTINGSURL)
    .catch((exception) => {
      console.warn('Could not fetch map configuration due to: ', exception);
      return new MapConfiguration();
    });
} 

此代码出现以下错误:

Type 'MapConfiguration' is not assignable to type 'ObservableInput<{}>'.

我是Observables的新手(曾经承诺过)并承诺我可以在catch中返回一个值。如何解决此问题,以便始终返回值?

我想让服务处理错误,而不是subscriber

2 个答案:

答案 0 :(得分:3)

为了始终具有返回值,您可以在catch中使用return Observable.of(new MapConfiguration());将其包装为可观察的。

答案 1 :(得分:0)

return Observable.of(new MapConfiguration());

将您的对象作为消息生成错误

return Observable.throw(new MapConfiguration());