的路徑。我正在使用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