javascript - Angular 2 路由异步解析不会保留导航位置

标签 javascript angular typescript angular2-routing resolve

在尝试访问不允许的页面时,我尝试将用户导航到错误页面。问题是 skipLocationChange 在这种情况下不起作用。它导航到错误页面,但 url 更改为根目录。如何保持用户提供的原始url?

resolve(route: ActivatedRouteSnapshot): Observable<any|boolean>|boolean {
    return this.apiclientService.get('cars/' + route.params['id']).map(
        response => {
            if (response.data.user_id === this.authService.user().id) {
                return response.data;
            }

            this.router.navigate(['/404'], { skipLocationChange: true });
            return false;
        }
    ).catch(error => {
        this.router.navigate(['/404'], { skipLocationChange: true });

        return Observable.of(false);
    });
} 

最佳答案

我认为 skipLocationChange 确实有效。问题是 Angular 没有导航到新路线,因为守卫失败了。如果您想捕获失败的 URL,请检查 route: ActivatedRouteSnapshot 参数。

关于javascript - Angular 2 路由异步解析不会保留导航位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41210011/

相关文章:

php - ajax 请求/php session 变量

Javascript 在 Safari 中工作,但在 Chrome 中不工作

javascript - 使用angularjs更改按钮样式

angular - 如何使用文件上传选项在 angular2 中制作简单的自定义拖放功能

javascript - Angular 6 外部 js、css 引用不起作用

typescript - 转到定义在 VS Code 版本 1.47.2 中不起作用

javascript - 如何使用 Exports 或 module.exports 将带有原型(prototype)的函数构造函数对象方法包装在单个模块中

angular - 既然 ProvideIn 是一个选项,那么 CoreModule 模式是否有理由?

javascript - 如何在 typescript 中输入 3 参数柯里化(Currying)函数?

javascript - 禁用某些选择复选框上的按钮