如果这是其他地方的道歉,但我的正常搜索策略让我失望。
当我从API收到500时,我想显示自定义错误页面。我正在使用restangular并有一个响应拦截器,当我收到500时,它会重定向到错误页面,使用:
this.router.navigate(['/error']);
这一切都有效。但是,我想在浏览器导航栏中保留以前的URL,以便在用户刷新时再次尝试上一页,而现在他们必须重新导航到损坏的页面再试一次。
谢谢!
答案 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) {
}