我对angular2 http响应有疑问。
我想捕捉组件中的错误。
我的应用如何运作 在我的组件中,我在个人服务中调用函数:
var response = this.apiUser.login(username, password);
alert(response);
在我的服务中,我尝试授权:
this.http.post(this.httpApiAdress + '/' + this.httpUserAutenticate, body, { headers: contentHeaders })
.subscribe(
response => {
localStorage.setItem('id_token', response.json().token);
this.router.navigate(['home']);
},
error => {
return error.json();
},
() => { }
);
当auth正常时,一切正常。但是当Auth失败时,我无法在我的Component中捕获响应。 (由于警报是在http呼叫之前执行的,因此未完成...)
请你帮我! (当所有代码都只在我的Component中时,它工作正常,但我想放弃我的代码......)
泰
答案 0 :(得分:1)
使用map()
代替subscribe()
return this.http.post(this.httpApiAdress + '/' + this.httpUserAutenticate, body, { headers: contentHeaders })
.map(
response => {
localStorage.setItem('id_token', response.json().token);
this.router.navigate(['home']);
},
);
然后在响应或错误到达时使用subscribe执行代码
var response = this.apiUser.login(username, password)
.subscribe(
response => alert(response),
error => alert(error),
);