自定义订阅err angular

时间:2018-07-12 04:03:03

标签: angular typescript http

我一直在学习Angular 6,但对订阅方法和错误处理有疑问。

因此,可观察对象上的订阅功能的基本用法如下所示:

this.myService.myFunction(this.myArg).subscribe(
  // Getting the data from the service
  data => {
    this.doSomethingWith(data);
  },
  err => console.log('Received an error: ', err),
  () => console.log('All done!')
);

因此,在这种情况下的错误可能是500错误或类似的错误,但是我想知道是否有一种方法可以从后端(我使用PHP)发送数据,从而使subscribe函数将其识别为一个错误。例如,我的应用程序允许用户从特定的有限集合(本例中为所有神奇宝贝的集合)创建物品列表,因此,如果他/她尝试添加不存在的神奇宝贝,我希望我的后端返回错误。目前,我正在返回这样的JSON对象:{ "error" => "you did something wrong" },并在我的Subscribe函数的第一个参数中对其进行处理。我想很好,但是如果有适当的错误处理措施,我认为最好利用它。 干杯!

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

import {
    HttpEvent,
    HttpHeaders,
    HttpInterceptor,
    HttpResponse,
    HttpErrorResponse,
    HttpHandler,
    HttpRequest
} from '@angular/common/http';

this.myService.myFunction(this.myArg).subscribe(
  // Getting the data from the service
  data => {
    this.doSomethingWith(data);
  },
 (err: any) => {

        if (err instanceof HttpErrorResponse) {
              switch (err.status) {
                   case 400:
                     console.log("400 Error")
                     break;
                   case 401:
                     console.log("401 Error")
                     break;
                   case 500:
                     console.log("500 Error")
                     break;
          }
       }
);