Angular2 - 在不触发路线的情况下更改位置

Angular2 - changing location without triggering a Route

我有一个使用服务加载项目列表的视图。我总是只显示一个项目,使用 << >> 按钮在项目之间移动。

有没有办法在不触发 Angular 的路由系统的情况下更改浏览器地址栏中的地址并向浏览器的历史记录中添加记录?

我知道如果我使用:

location.go('users/3');

它会做上述事情,但它也会触发 Angular 的路由系统,进而再次调用我的服务。

编辑:

好像是location的函数

location.replaceState('users/3');

接近我想做的事情 - 它在浏览器中更改 url 而没有触发任何 Angular 内部结构,不幸的是它取代了历史记录中的最新位置,而不是将新位置推到顶部.

如果您不将服务添加到组件 provider: 列表中,您将不会获得该服务的新实例。通过仅在 bootstrap(AppComponent, [MyGlobalService]).

中注册来使服务全局化

实施 CanReuse see also 可能有助于防止 re-initializing 组件重复使用同一路由。