【问题标题】:In Angular, how to remove the current route from history on navigation?在 Angular 中,如何从导航历史记录中删除当前路线?
【发布时间】:2018-07-19 16:27:10
【问题描述】:

在我的应用程序中,我有一个类别页面,其中包含指向各种产品列表页面的链接。如果事实证明当您进入产品列表页面时只有一个产品,那么它会自动导航到该产品详细信息页面。我想要的是删除历史记录中的产品列表页面路由,这样当用户在产品详细信息页面上并点击后退按钮时,他们将转到类别页面而不是产品列表页面,因为这只会将它们重定向回来到详情页。

【问题讨论】:

    标签: angular5 angular-routing


    【解决方案1】:

    您可以使用角度路由器replaceUrl 标志来执行此操作。更多详情请参阅 api 文档here

    this.router.navigate(['/view'], { replaceUrl: true });
    

    【讨论】:

    • 虽然我知道这个选项,但显然我不明白它是如何工作的。
    • 它只替换当前状态。那么所有的历史呢?
    • 值得注意的是,在历史路径中,只有当前活动的路线被新的导航路线替换,其他所有历史都保留。
    【解决方案2】:

    如果使用 $location 对象来切换视图,与@alt255 的帖子中相同的方法是使用 replace() 方法在调用 path("..."):

    $location.path("/").replace();
    

    【讨论】:

    • Angular 中没有 $location 这样的东西,这是一个 AngularJs 服务。
    • '$location' 解决方案确实适用于 AngularJS。不过,对于 AngularJS 场景来说,这是一个很好的解决方案。
    • 这个讨论是关于 Angular 而不是 AngularJs。
    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多