instanceof响应在错误处理角度2中不起作用

时间:2018-09-07 11:45:02

标签: angular error-handling angular-routing angular-http

我正在尝试为angular 2服务中的http调用添加一般错误处理。

代码如下:

service.ts

 return this._http
      .post(`${appConstant.apiConfig.BASE_PROXY_URL}/test`, filters)
      .toPromise()
      .then(res => {
        return res.json().data;
      })
      .catch(error => {
        return handleHttpError(error, this.notificationsService);
      });

http-error-handlers.ts

import { Observable } from 'rxjs/Observable';
import { NotificationsService } from 'angular2-notifications';

export const handleHttpError = (error: Response | any, notificationService: NotificationsService) => {    

  let errMsg: string;
  if (error instanceof Response) {
    const body = error.json() || '';
    const err = body['error'] || JSON.stringify(body);
    errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
  } else {
    errMsg = error.message ? error.message : error.toString();
  }
  notificationService.error('', errMsg, { showProgressBar: false });
  console.error(errMsg);

  return Observable.throw(errMsg);
};

它存在一些问题,例如:

  • error instanceof Response返回false,尽管error is Response type

enter image description here

  • handleHttpErrorfunction而没有class,那么我可以向该函数注入另一个服务吗?就我而言,我无法inject NotificationService,所以我将其添加为agrs

  • 我正在service function的{​​{1}}中呼叫resolve。如果服务抛出错误,如何取消到下一条路线的导航。

  • 我真的很困惑,这是在route resolver中添加error handling的更好方法

0 个答案:

没有答案