来自 HTTP 捕获的解析错误 return - Angular 2
Parse error return from HTTP catch - Angular 2
我已经通过我的 HTTP 请求中的 catch 获得了 API 错误 return 的值。我现在的问题是如何在调用服务时获取组件中 HTTP catch 的 return 值。
这是我在 HTTP 服务中的代码:
login(username,password){
let headers = new Headers();
headers.append('Content-Type','application/json');
return this.http.post(this.configEnvironment.url() + "oauth/access_token",
JSON.stringify(
{
username: username,
password: password,
grant_type: "password",
client_id: "xxxx",
client_secret: "xxxxx"
}
),
{ headers }
)
.map(res => res.json())
.catch((err:Response) => {
let details = err.json();
return Observable.throw(new Error(details));
});
}
这是我的代码 login.component:
this.loginService.login(this.model.username,this.model.password)
.subscribe(
data => console.log("data"),
error => {
console.log(error);
},
() => console.log("Finished")
);
在 chrome 开发者工具中,这是 console.log 的 return:
Error: [object Object](…)
但 http 服务捕获的实际 return 是这样的:
{ "error":"invalid_credentials","error_description": "invalid credentials" }
这是我想进入 login.component
在您的 .catch()
中,更改:
return Observable.throw(new Error(details));
至:
return Observable.throw(details);
我已经通过我的 HTTP 请求中的 catch 获得了 API 错误 return 的值。我现在的问题是如何在调用服务时获取组件中 HTTP catch 的 return 值。
这是我在 HTTP 服务中的代码:
login(username,password){
let headers = new Headers();
headers.append('Content-Type','application/json');
return this.http.post(this.configEnvironment.url() + "oauth/access_token",
JSON.stringify(
{
username: username,
password: password,
grant_type: "password",
client_id: "xxxx",
client_secret: "xxxxx"
}
),
{ headers }
)
.map(res => res.json())
.catch((err:Response) => {
let details = err.json();
return Observable.throw(new Error(details));
});
}
这是我的代码 login.component:
this.loginService.login(this.model.username,this.model.password)
.subscribe(
data => console.log("data"),
error => {
console.log(error);
},
() => console.log("Finished")
);
在 chrome 开发者工具中,这是 console.log 的 return:
Error: [object Object](…)
但 http 服务捕获的实际 return 是这样的: { "error":"invalid_credentials","error_description": "invalid credentials" } 这是我想进入 login.component
在您的 .catch()
中,更改:
return Observable.throw(new Error(details));
至:
return Observable.throw(details);