如何使用router.navigate在observable中处理4xx错误。角2

时间:2016-11-29 11:31:36

标签: angular rxjs

错误发生后

中的handleError函数中的router.navigate

可观察方法

getAll(): Observable<any[]> {
    return this._http.get('/api/getall' )
        .map((response: Response) => <any[]>response.json())
        .do(data => console.log("All: " + JSON.stringify(data)))
        .catch(this.handleError);
}

处理错误方法

 private handleError(error: any) { 
  if (error.status === 401) {     
    this._router.navigate(["/login"]);             
    {
    return Observable.throw(error.json().error || 'Server error');
   }
}

2 个答案:

答案 0 :(得分:4)

如果您想在this中使用handleError,则需要以不同方式传递此功能

getAll(): Observable<any[]> {
    return this._http.get('/api/getall' )
        .map((response: Response) => <any[]>response.json())
        .do(data => console.log("All: " + JSON.stringify(data)))
        .catch(this.handleError.bind(this));
        // .catch(err => this.handleError(err));
}

答案 1 :(得分:1)

我改变后

node.js

.catch(this.handleError.bind(this));

这项工作正常

感谢@günter-zöchbauer