Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2/4/5捕捉路由链接异常_Javascript_Html_Angular - Fatal编程技术网

Javascript 角度2/4/5捕捉路由链接异常

Javascript 角度2/4/5捕捉路由链接异常,javascript,html,angular,Javascript,Html,Angular,我正在尝试捕获应用程序中的路由异常。基本上,用户有3种导航方式: 键入地址捕获很容易,只需在路由配置中键入{path:'**',重定向到:'errorPage'} 代码名为router.navigate(['pageName'])-捕获也很容易:。然后(res=>res,error=>{ //将错误记录到服务器的服务 router.navigate(['errorPage']); }); 单击具有[routerLink]=“somePath”属性的HTML元素 这是我不知道怎么抓的第三个。 如果

我正在尝试捕获应用程序中的路由异常。基本上,用户有3种导航方式:

  • 键入地址捕获很容易,只需在路由配置中键入
    {path:'**',重定向到:'errorPage'}
  • 代码名为
    router.navigate(['pageName'])
    -捕获也很容易:
    。然后(res=>res,error=>{
    //将错误记录到服务器的服务
    router.navigate(['errorPage']);
    });
  • 单击具有
    [routerLink]=“somePath”
    属性的HTML元素
  • 这是我不知道怎么抓的第三个。
    如果模块由于某种原因没有加载,可能会发生这种错误。我需要能够优雅地处理这些(以及其他不可预见的事件)

    澄清

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

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

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

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

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

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

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

    {path:'**',重定向到:'errorPage'}
    是通配符路由定义,它定义为:

    如果请求的URL与配置中先前定义的路由的任何路径不匹配,路由器将选择此路由。这对于显示“404-找不到”页面或重定向到其他路由非常有用


    因此,当请求的路由与任何定义的路由不匹配时(无论是键入的还是设置的),这都应该适用于任何情况。检查routerLink定义是否正确,因为它的定义没有括号:
    危机中心

    {path:'**',重定向到:'errorPage'}
    是通配符路由定义,它定义为:

    如果请求的URL与配置中先前定义的路由的任何路径不匹配,路由器将选择此路由。这对于显示“404-找不到”页面或重定向到其他路由非常有用


    因此,当请求的路由与任何定义的路由不匹配时(无论是键入的还是设置的),这都应该适用于任何情况。检查routerLink定义是否正确,因为它的定义没有括号:
    危机中心

    我实际上在为routerLink使用动态值(我在此处发布时,为了清晰起见,对代码进行了编辑)。请参阅在Github上检查此问题以查看是否有帮助,我有一些类似的有趣错误,但与我的问题无关(也已修复)。我的问题不是bug,而是如何处理异常。实际上,我在routerLink中使用了动态值(为了清晰起见,我在这里发布代码时对代码进行了编辑)。请参阅在Github上检查此问题以查看是否有帮助,我有一些类似的有趣错误,但与我的问题无关(也已修复)。我的问题不是bug,而是如何处理异常。