Angular 2/4/5 Catch routerLink异常

时间:2018-02-26 08:41:17

标签: javascript html angular

我正在尝试在我的应用中捕获路由异常。基本上,用户可以通过3种方式进行导航:

  1. 键入地址 - 在路由配置中捕获{ path: '**', redirectTo: 'errorPage'}很简单。
  2. 名为router.navigate(['pageName'])的代码 - 也很容易捕捉:.then(res => res, error => { //service to log error to server router.navigate(['errorPage']); });
  3. 单击具有[routerLink]="somePath"属性的HTML元素。
  4. 这是第三个我不知道如何捕捉的人 如果模块由于某种原因没有加载,可能会发生这样的错误。我需要能够优雅地处理(以及其他无法预料的事件)。

    要澄清 在大多数情况下,通配符定义适用于路由器问题。但是这就是问题,如果配置中先前定义了一个路由,但它会导致无法找到的模块! (我实际上在开发中遇到了这个错误,这就是为什么我知道它可能发生,我们正在使用延迟加载,并且发生了一些网络问题,所需的模块没有加载)。路由器找到路由,并尝试解析它,但不能,因为模块,无论出于何种原因,没有加载。通配符定义在这里没有帮助,因为路由器找到了路径但无法到达它。所以它抛出了一个错误,我正试图抓住它。因为某些原因路由器错误会阻塞整个应用程序。

1 个答案:

答案 0 :(得分:1)

为什么不在路由模块中创建回退路径?

const routes: Routes = [
    { path: '', component: HomeComponent },
    { path: '**', component: NotFoundComponent },
];

当用户输入时,不存在的url将被重定向到NotFoundComponent。