angular - 解析从 HTTP catch 返回的错误 - Angular 2

标签 angular angular2-services

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

这是我在 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的实际返回是这样的: { “错误”:“invalid_credentials”,“error_description”:“无效凭证”} 这是我想进入 login.component

最佳答案

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

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

到:

return Observable.throw(details);

关于angular - 解析从 HTTP catch 返回的错误 - Angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40067831/

相关文章:

带有 ngrx 的 Angular 2 router v3 observable guard

angular - 在不共享同一父组件的子组件之间共享 Angular 2 服务

angular - 遇到未定义的提供者!通常这意味着你有一个循环依赖(可能是由于使用 'barrel' index.ts 文件引起的

javascript - 从 angular2 构建的新 Cordova 在 android 上构建白屏

html - 如何使用express和Angular 2( typescript )编辑待办事项列表中的标题

angular - Angular 中的双向数据绑定(bind)

angular - 仅当 dotnet api 在我的 launch.json 文件中初始化后,才可以启动我的 Angular SPA 吗?

Angular 4 - 主线程上的同步 XMLHttpRequest 已弃用,因为它对最终用户的体验有不利影响

angular - 服务事件不会正确影响模板

javascript - 如何在 Angular2 的 DELETE 请求中传递参数