【问题标题】:Parse error return from HTTP catch - Angular 2解析来自 HTTP 捕获的错误返回 - Angular 2
【发布时间】:2016-10-16 07:11:38
【问题描述】:

我已经在我的 HTTP 请求中通过 catch 获取 API 错误返回的值。我现在的问题是如何在调用服务时获取组件中 HTTP 捕获的返回值。

这是我的 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 的返回:

Error: [object Object](…)

但是http服务catch的实际返回是这样的: {“错误”:“无效凭据”,“错误描述”:“无效凭据”} 这就是我想进入 login.component

【问题讨论】:

  • 我不明白。你在控制台中得到的不是你想要的?你想要什么?
  • 服务的实际返回是这样的: {"error":"invalid_credentials","error_description": "invalid credentials" 我想在组件中得到这个
  • 在组件中尝试error.error_description。

标签: angular angular2-services


【解决方案1】:

在您的.catch() 中,更改:

return Observable.throw(new Error(details));

到:

return Observable.throw(details);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-22
    • 2017-04-24
    • 1970-01-01
    • 2018-11-28
    • 2015-04-08
    • 2018-01-21
    • 1970-01-01
    • 2017-02-17
    相关资源
    最近更新 更多