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

Angular 2: Prevent router from adding to history

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

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

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

事实证明,Angular 2 的路由有一种 built-in 方法可以跳过向历史记录添加状态。我们实际上发现它通过编辑器的智能感知中的随机属性进行检查。

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

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

至:

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

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

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