【问题标题】:Angular 2: Prevent router from adding to historyAngular 2:防止路由器添加到历史记录
【发布时间】:2017-02-03 16:09:59
【问题描述】:

我们有一个客户在我们的应用程序中使用 iFraming 到他们的网站。他们不希望我们应用程序中的路由器导航影响他们自己网站的后退按钮导航。

我们尝试了几种方法,包括使用发布消息来尝试让 iFrame 在触发 history.back() 时与父窗口通信。

我的问题是,在使用 Angular 2 的路由器时,是否有任何简单的方法可以不影响浏览器的历史记录。据我所知,我在 Angular 2 的高级路由器文档中找不到任何内容:https://angular.io/docs/ts/latest/guide/router.html

【问题讨论】:

    标签: javascript angular iframe angular2-routing browser-history


    【解决方案1】:

    事实证明,Angular 2 的路由有一种内置方式可以跳过向历史添加状态。我们实际上发现它检查了编辑器智能感知中的随机属性。

    我们的路由代码必须来自:

    this.router.navigate([`/myPage/${this.Id}`], { relativeTo: this.route });

    到:

    this.router.navigate([`/myPage/${this.Id}`], { relativeTo: this.route, skipLocationChange: true });

    【讨论】:

    • 我觉得他们应该允许你在路线上指定一个标志,比如shadow: true,来烘焙这种行为。
    • 为了完整起见,有Location.replaceState() 方法可以做类似的事情。
    • “this.route”指的是什么?声明的变量是什么?
    • @razorsyntax 我认为应该是constructor(private route: ActivatedRoute) {...
    【解决方案2】:

    此外,NavigationExtras 中还有一个选项,允许将历史中的当前状态替换为新状态:

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

    【讨论】:

      猜你喜欢
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 2014-02-05
      • 2022-07-25
      相关资源
      最近更新 更多