Angular2 - 改变位置而不触发路线

时间:2016-01-19 12:19:19

标签: angular angular2-routing

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

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

我知道如果我使用:

location.go('users/3');

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

编辑:

它似乎是位置的功能

location.replaceState('users/3');

接近我想要做的事情 - 它在浏览器中更改url而不触发任何Angular内部,不幸的是它取代历史中的最新位置而不是在顶部推送新的位置。

1 个答案:

答案 0 :(得分:1)

如果您不将服务添加到组件provider:列表,则不会获得此服务的新实例。只需在bootstrap(AppComponent, [MyGlobalService])中注册即可使服务全局化。

实施CanReuse另请参阅Angular 2: Swapping between different components without destroying them可能有助于防止在重复使用相同路由时重新初始化组件。