4

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

有什么方法可以更改浏览器地址栏中的地址并将记录添加到浏览器的历史记录而不触发 Angular 的路由系统?

我知道如果我使用:

location.go('users/3');

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

编辑:

似乎是位置的功能

location.replaceState('users/3');

正在接近我想要做的事情 - 它在浏览器中更改 url 而不会触发任何 Angular 内部,不幸的是它替换了历史上的最新位置,而不是将新位置推到顶部。

4

1 回答 1

1

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

实现CanReuse另请参阅Angular 2:在不同组件之间交换而不破坏它们可能有助于防止在重用相同路由时重新初始化组件。

于 2016-01-19T12:21:52.703 回答