角度路由:保留NavigationError网址

时间:2017-04-28 14:59:11

标签: angular angular-routing

目前在Angular 4中,如果我试图验证此路线是否有效:

/my/long/route

如果我直接转到它并且它会抛出错误,Router会将网址更新为/,因为没有加载有效路由。如果我导航到应用程序中的错误抛出路径,则url将设置为最后一个有效的路径。

有没有办法可以将URL设置在失败的路由URL上?从错误日志记录的角度来看,如果我可以在路由器事件中使用用户所反对捕获的实际URL,那将是很好的,并且对于本地调试,能够刷新与需要相对的页面会很好每次导航回来。

1 个答案:

答案 0 :(得分:0)

基于源代码:

https://github.com/angular/angular/blob/410aa33005f2dc6f6500db71e7f019a744f909d9/packages/router/src/router.ts#L750

我真的没有办法解决这个问题。

现在我只是要这样做(这有它自己的问题):

    this.router.events.subscribe(event => {
        if (event instanceof NavigationError) {
            this.routeFailed = true;
            setTimeout(() => this.location.replaceState(event.url));
        } else {
            this.routeFailed = false;
        }
    });