繁体   English   中英

如何在Angular 6中的解析器服务中使用路由器导航?

[英]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']不起作用(仅显示空白页面)。 否则-在没有解析器的情况下-一切正常,并且如果发生403404错误,则将用户通知错误组件。

谁能帮我解决这个问题?

编辑:

我的解析器看起来像这样:

@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM