如何捕捉角度2的错误?

时间:2017-05-16 09:47:29

标签: angular typescript angular2-routing angular-http

我是一个像下面的服务器调用

在成功的情况下,

STATUS --- 200

{error_code: 0, status: "success", results: [,…], message: "Album successfully found."}

在失败的情况下,    STATUS --- 401

 Login credentials are incorrect.

我正在处理代码,

 this.http.post(this.serverUrl+'login',loginForm.value,{headers: headers})
        .subscribe(response => {
            if (response.json().error_code === 0) {
               console.log('success'); 
            } else {
               console.log('fail'); 
            }
        }) 
  }

但这是一个错误(401状态)。所以它不会出现在其他情况下。任何人都建议帮助处理或捕获此错误。谢谢。

3 个答案:

答案 0 :(得分:1)

订阅有一个错误回调:

 this.http.post(this.serverUrl+'login',loginForm.value,{headers: headers})
        .subscribe(
        (response) => {
            if (response.json().error_code === 0) {
               console.log('success'); 
            } else {
               console.log('fail'); 
            }
        },
        (error)=>{
            console.log(error);
        }
     ) 
  }

文档中的示例:https://angular.io/docs/ts/latest/guide/server-communication.html#!#the-herolistcomponent-class

答案 1 :(得分:1)

Subscribe方法有3个参数,第一个是在收到成功响应时调用的,第二个是在收到错误响应时调用的,第三个是在完成时调用的。你应该试试这个;

this.http.post(yourParameters).subscribe(response => {
     console.log('success');
}, error => {
     console.log('fail')
});

我还建议您查看angular tutorialRxjs Subscribe

答案 2 :(得分:1)

您也可以使用.catch

this.http.post(this.serverUrl+'login',loginForm.value,{headers: headers})
        .subscribe(response => {
            if (response.json().error_code === 0) {
               console.log('success'); 
            } else {
               console.log('fail'); 
            }
        }).catch((err)=>{console.log(err)});