在我的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/