的路径。我正在使用Angular2服务发出HTTP请求到一个RESTful API服务器。我需要捕捉401错误并将用户重定向到/登录页面。出于某种原因,router.nagivate(['/ login'])不会在下面的代码中执行。请注意,我已按照此答案中的说明Angular 2 redirect in http/rxjs catch callback causes TypeError: Cannot read property 'subscribe' of undefined,但我的代码不重定向。Angular2导航到基于HTTP 401错误
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代码。 UIRouter并呼吁the go method:
是否得到记录错误从你的'handleError'功能安慰? – Brad
是的。它是401. – kkotak