2017-06-12 72 views
0

得到错误信息在我AuthService,我举办了一个商业错误,错误信息 在我LogInComponent,它捕捉任何错误,但无法显示错误消息"Login failed Error",而不是Object类型的对象被显示在控制台日志。 这是为什么?如何正确显示错误信息?无法在Angular2`

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; 
     }); 
    } 

回答

0

我发现这个问题现在的工作 我应该使用抛出新的错误(“失败的登录”),而不是 掷Observable.throw(新错误(“登录失败”));

0

误差对象不显示错误消息。添加行

console.dir(error); 

并且您将在控制台中列出具有所有属性的对象。您需要使用错误对象的某些属性行

console.log("here is error "+ error);