【发布时间】:2016-12-13 20:19:28
【问题描述】:
我正在使用 Angular2 中的一项服务,该服务向 RESTful API 服务器发出 HTTP 请求。我需要捕获 401 错误并将用户重定向到 /login 页面。由于某种原因, router.nagivate(['/login']) 没有在下面的代码中执行。请注意,我已按照此答案 Angular 2 redirect in http/rxjs catch callback causes TypeError: Cannot read property 'subscribe' of undefined 中的说明进行操作,但我的代码没有重定向。
search(term: string): Observable<[]> {
return this.http
.get(this.userListUrl+'User?name='+term')
.map((r: Response) => r.json())
.catch(this.handleError);
}
private handleError(error: any): Observable<any>{
if(error.status == 401) {
console.error('An error occurred', error.status);
this.router.navigate(['/login']);
return Observable.of([]);
} else {
let errMsg = error.statusText || 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}}
constructor(private http: Http, private router:Router) {}
编辑:更新 handlerError 代码。
【问题讨论】:
-
错误是否从您的
handleError函数记录到控制台? -
是的。它是 401。
标签: http angular error-handling routes