gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:46:44 25 4
gpt4 key购买 nike

我正在使用以下 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com