Angular 2:防止路由器添加到历史记录

My *_*eth 9 javascript iframe browser-history angular2-routing angular

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

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

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

My *_*eth 18

事实证明,Angular 2的路由有一种内置方式可以跳过向状态添加状态.我们实际上发现它通过编辑器的intellisense中的随机属性进行检查.

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

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

至:

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

  • 我觉得他们应该允许你在路线上指定一个标志,比如`shadow:true`,来烘焙这种行为. (2认同)
  • 为了完整起见,有[Location.replaceState()](https://angular.io/api/common/Location#replaceState)方法做类似的事情. (2认同)

小智 7

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

this.router.navigate(['/view'], {replaceUrl: true});
Run Code Online (Sandbox Code Playgroud)