Tza*_*dia 5 angular2-routing angular
我有一个简单的解析器,用于如下路线/orders/first:
resolve(): Promise<Order> {
return this.orderService.get()
.then((response) => response.order)
.catch(error => Promise.reject(error));
}
Run Code Online (Sandbox Code Playgroud)
我还有一个重定向到错误页面的错误处理程序:
this.router.navigate(['/error'], { skipLocationChange: true });
Run Code Online (Sandbox Code Playgroud)
我希望 URL 是/orders/first这样,如果用户刷新他可能能够查看该页面。这也会使后退按钮返回到不正确的页面(上一页)
问题是解析器在路由激活之前运行,因此 URL 不会更改。
有没有办法做到这一点?
编辑:找到这个解决方法:
NavigationStart并将路由保存到变量this.location.go(nextRoute.url);skipLocationChange设置为 true我是这样实现的:
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<any>|Promise<any>|any {
return this.clientService.get(route.params.id)
.catch( err => {
const path = this.location.path();
this.router.navigate(["/" + err.status], { skipLocationChange: true })
.then( () => {
this.location.replaceState(path);
});
return Observable.empty();
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1265 次 |
| 最近记录: |