【问题标题】:Can I route to an error page from the HTTPInterceptor in angular我可以从 Angular 的 HTTPInterceptor 路由到错误页面吗
【发布时间】:2021-10-29 02:39:03
【问题描述】:

我使用的是 Angular 8,并且我有一个 HTTPInterceptor 拦截我的应用程序中的每个 API 调用。用于错误处理和路由到/error/401 页面的目的,以防 API 返回 HTTP 401。

我在拦截方法中使用了this.route.navigate(['error', responseCode]);。我在应用模块中有以下路线

{
    path: 'error/:responseCode',
    component: ErrorPageComponent
 }

网址正在更新为/error/401,但组件未启动。但是,如果我刷新浏览器,则会加载 ErrorPageComponent 并显示消息。

【问题讨论】:

  • 您检查控制台是否有错误?还是您使用changedetection 策略?
  • 没有控制台错误。
  • 可以分享错误组件的代码吗?
  • export class ErrorPageComponent implements OnInit { errorCode: string; constructor( private activatedRoute: ActivatedRoute ) { } ngOnInit() { this.activatedRoute.snapshot.url[1].toString(); // errorMessage display logic } }
  • 这工作正常,在更改我们的 html 中的一些逻辑之后,它仅在收到一些 API 响应后才加载数据,由于 HTTP 503 而失败。

标签: angular routes


【解决方案1】:

由于我花了一些时间研究这个问题,我想自己回答这个问题。

可以根据拦截器的 statusCode 路由到错误页面。我已经完成了以下操作。

constructor(private route: Router) { }

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
....
this.route.navigate(['error', responseCode]);

另外,在app-routing模块中,添加了下面的sn-p。

 {
    path: 'error/:id',
    component: ErrorPageComponent
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    相关资源
    最近更新 更多