我正在尝试在我的应用中捕获路由异常。基本上,用户可以通过3种方式进行导航:
{ path: '**', redirectTo: 'errorPage'}
很简单。router.navigate(['pageName'])
的代码 - 也很容易捕捉:.then(res => res, error => {
//service to log error to server
router.navigate(['errorPage']);
});
[routerLink]="somePath"
属性的HTML元素。这是第三个我不知道如何捕捉的人 如果模块由于某种原因没有加载,可能会发生这样的错误。我需要能够优雅地处理(以及其他无法预料的事件)。
要澄清 在大多数情况下,通配符定义适用于路由器问题。但是这就是问题,如果配置中先前定义了一个路由,但它会导致无法找到的模块! (我实际上在开发中遇到了这个错误,这就是为什么我知道它可能发生,我们正在使用延迟加载,并且发生了一些网络问题,所需的模块没有加载)。路由器找到路由,并尝试解析它,但不能,因为模块,无论出于何种原因,没有加载。通配符定义在这里没有帮助,因为路由器找到了路径但无法到达它。所以它抛出了一个错误,我正试图抓住它。因为某些原因路由器错误会阻塞整个应用程序。
答案 0 :(得分:1)
为什么不在路由模块中创建回退路径?
const routes: Routes = [
{ path: '', component: HomeComponent },
{ path: '**', component: NotFoundComponent },
];
当用户输入时,不存在的url将被重定向到NotFoundComponent。