Angular2- Catch错误并将其显示在视图中

时间:2017-08-31 04:33:32

标签: angular api exception

我有一个服务执行get请求并抛出错误。

service.ts

 return this.http.get(/apiUrl)
 .map(
    (response: Response) => {
        const items = response.json();
        return items;
    })
    .catch(
        (error: Response) => {
         return Observable.throw(error);
    });
}

我将它订阅到组件,我想在视图中显示错误。我搜索了这个异常处理,但我无法得到相关的答案我该怎么办?

component.ts

this.faqService.getServers()
  .subscribe(
    (data) => {
        this.item = data.items;
        console.log(this.item);
        },
        (error) => console.log(error)
    );
});

我可以在控制台中看到错误如何在视图中显示它。

错误

enter image description here

2 个答案:

答案 0 :(得分:3)

分配给变量,然后显示

在你的ts

中声明一个变量
errorMessage : string;

然后,

this.faqService.getServers()
  .subscribe(
    (data) => {
        this.item = data.items;
        console.log(this.item);
        },
        (error) => {
        this.errorMessage= error.error_message;             
        }
    );
});

然后在HTML中

<h1>{{errorMessage}}</h1>

您需要从服务中返回错误

 return this.http.get(/url)
     .map(
        (response: Response) => {           
            return response.json();
        })
        .catch(
            (error: Response) => {
             return Observable.throw(error.json());
        });
    }

答案 1 :(得分:3)

<强> Service.ts 你的服务应该是

return this.http.get(/apiUrl)
 .map(
    (response: Response) => {
        const items = response.json();
        return items;
    })
    .catch(
        (error: Response) => {
         return Observable.throw(error.json());
    });
}

你的组件应该是这样的。 的元器件

errorMessage : string;

this.faqService.getServers()
  .subscribe(
    (data) => {
        this.item = data.items;
        },
        (error) => {
          this.errorMessage = error.error_message;
        }
    );
});

<强> HTML

<span class="alert">{{errorMessage}}</span>