[英]How to use router navigation in a service for resolvers in Angular 6?
我正在使用以下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']
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.