我正在使用以下 ErrorHandleService
每次任何服务发生错误时都会调用它。
handleError<T> (operation = 'operation', result?: T) {
return (error: any): Observable<T> => {
const errorBody = error.json();
const userMessage = this.getUserMessage(errorBody.error);
if (error.status === 403 || error.status === 404) {
this.router.navigate(['error']);
} else {
if (userMessage === 'Es ist leider ein Fehler aufgetreten, bitte versuchen Sie es erneut') {
this.logError(operation, errorBody.error).subscribe();
console.log('An error has occured: ' + operation + ' (' + error.status + ')');
}
return throwError(userMessage);
}
};
对于某些组件,我已经实现了解析器。 问题是:
如果在使用解析器访问路由时发生 HTTP 错误(403 或 404),
this.router.navigate['error']
不起作用(只显示空白页面)。否则 - 没有解析器 - 一切正常,如果 403
,用户将被转发到错误组件。或 404
发生错误。谁能帮我解决这个问题?
编辑:
我的解析器看起来像这样:
@Injectable()
export class GetStaffsResolver implements Resolve<Array<Staff>> {
constructor(private ss: StaffService) { }
resolve(activatedRoute: ActivatedRouteSnapshot) {
return this.ss.getStaffs(activatedRoute.queryParams['branch']);
}
}
最佳答案
Router.navigate
是一个方法,而不是一个数组。尝试调用它
this.router.navigateByUrl('error');
而不是
this.router.navigate['error']
.
关于angular - 如何在 Angular 6 中的解析器服务中使用路由器导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52054418/