angular - 无法在Angular2中获取错误消息`

标签 angular error-handling

在我的AuthService中,我抛出了带有错误消息的业务错误
在我的LogInComponent中,它捕获了该错误,但是无法显示错误消息"Login failed Error",而是在控制台日志中显示了Type对象Object。
为什么会这样呢?如何正确显示错误信息?

import { Injectable } from '@angular/core';
import { Response } from "@angular/http/src/static_response";
import { Http } from "@angular/http";
import { Observable } from "rxjs/Observable";
import { UUID } from "angular2-uuid";
import 'rxjs/Rx'
import { User } from "app/user/user";
import { Subject } from "rxjs/Subject";

@Injectable()
export class AuthService {
  REMOTE_USER_URL = "http://localhost:3000/users/";
  public subject: Subject<User> = new Subject<User>();

  constructor(public http: Http) { }

  public get currentUser(): Observable<User> {
    return this.subject.asObservable();
  }
  public login(username, password) {
    return this.http.get(this.REMOTE_USER_URL + "?username=" + username)
      .map((response: Response) => {
        // login successful if there's a jwt token in the response
        let data = response.json();
        if (data.length == 1) {
          let user = data[0];
          if (user.username == username && user.password == password) {
            // store user details and jwt token in local storage to keep user logged in between page refreshes
            localStorage.setItem('currentUser', JSON.stringify(user));
            this.subject.next(Object.assign({}, user));
            return "LoggedIn Successfully";
          } else {
            console.log("throw login failed Errror **");
            //throw Observable.throw(response);
            throw Observable.throw(new Error("login failed error "));
          }
        } else {
          console.log("throw login failed Errror ****");
          throw Observable.throw(new Error("login failed error "));
        }
      });
  }

  logout() {
    localStorage.removeItem('currentUser');
    this.subject.next(Object.assign({}));
  }

}

下面是UserloginComponent,它捕获了抛出的错误,但不显示错误消息
login() {
    this.loading = true;
    this.authenticationService.login(this.model.username, this.model.password)
      .subscribe(
      data => {
        this.router.navigate([this.returnUrl]);
      },
      error => {
        // how to get this Error Message
        console.log("here is error "+  error);
        this.alertService.error(error);
        this.loading = false;
      });
  }

最佳答案

错误是对象。添加行

 console.dir(error);

然后您将在控制台中列出带有所有属性的对象。您需要在行中使用错误对象的某些属性
console.log("here is error "+  error);

关于angular - 无法在Angular2中获取错误消息`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44495236/

相关文章:

python - 程序员说 "raise an error"是什么意思(例如,为什么要这样做)?

java - Windows 7 中的 Protractor 问题

javascript - Angular 5 中 Observable 中 'this' 的范围

java - 最佳实践 - 通用 webdriver 等待加载弹出窗口存在,如果出现错误则测试失败

Python 多处理 : Handling Child Errors in Parent

php - Symfony主义OneToOne嵌入式表单error_bubbling

javascript - 对预检请求的响应未通过 Angular 2 的访问控制检查

javascript - Angular 2 路由 : Referencing Variable in Router. url

javascript - 根据环境有条件地在 Angular 中加载一组不同的工厂

certificate - 使用 GnuTLS 导入证书期间出现错误代码 -207