2017-06-12 7 views
0

In meinem AuthService zu bekommen, ich bin ein Business-Fehler mit Fehlermeldung In meinem LogInComponent werfen, fängt sie diesen Fehler aber nicht Fehler Nachricht "Login failed Error", stattdessen Typ Objekt-Objekt-Anzeige in der Konsole angezeigt wurde anmelden. Warum ist das so? Wie wird die Fehlermeldung korrekt angezeigt?Nicht in der Lage Fehlermeldung in 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({})); 
    } 

} 

Im Folgenden finden Sie UserloginComponent, die geworfene Fehler fangen aber Fehlermeldung Objekt

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

Antwort

0

eine Eigenschaft von Fehlerobjekt verwenden ich das Problem gefunden es funktioniert jetzt habe ich neue Fehler werfen verwenden sollte („es scheitert bei der Anmeldung“) statt throw Observable.throw (neu Fehler ("Es schlägt bei der Anmeldung fehl"));

0

Fehler nicht ist angezeigt. Zeile hinzufügen

console.dir(error); 

und Sie werden Objekt mit allen Eigenschaften in der Konsole aufgelistet werden. Sie müssen in Reihe

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