Angular2如何在保持路线的同时显示错误页面

时间:2017-05-19 16:57:39

标签: angular angular2-routing

如果这是其他地方的道歉,但我的正常搜索策略让我失望。

当我从API收到500时,我想显示自定义错误页面。我正在使用restangular并有一个响应拦截器,当我收到500时,它会重定向到错误页面,使用:

this.router.navigate(['/error']);

这一切都有效。但是,我想在浏览器导航栏中保留以前的URL,以便在用户刷新时再次尝试上一页,而现在他们必须重新导航到损坏的页面再试一次。

谢谢!

3 个答案:

答案 0 :(得分:1)

没有直接的方法可以做到这一点。 但您可以重定向到错误页面,并将以前的页面保存在localStorage中,或者将其置于请求参数/error?page=redirectUrl

与刷新时相比,使用该参数值或localStorage数据再次导航到该页面。

答案 1 :(得分:1)

您可以添加:

setRouteErrorHandler(): void {
    let errorRoute = null;

    this.router.errorHandler = (error): void => {
        this.location.go(errorRoute.url);
        this.router.navigate(['/error'], { skipLocationChange: true, replaceUrl: true });
    };

    this.router.events
        .filter((next) => next instanceOf NavigationError)
        .subscribe((next) => {
            errorRoute = next;
    });
}

并从AppModule构造函数中调用setRouteErrorHandler()或实现您自己的APP_INITIALIZER

答案 2 :(得分:-1)

我应该制作一个错误渲染的ErrorComponent,只需在成功或错误时交换组件。

这是一个带有

的共享组件
try {

}
catch (e) {

}