我有一个使用服务来加载项目列表的视图。我总是只显示一个项目,并使用 > 按钮在项目之间移动。
有没有办法在不触发 Angular 路由系统的情况下更改浏览器地址栏中的地址并将记录添加到浏览器历史记录中?
我知道如果我使用:
location.go('users/3');
它会做上述的事情,但它也会触发 Angular 的路由系统,从而再次调用我的服务。
Edit:
看起来像是位置的功能
location.replaceState('users/3');
正在接近我想要做的事情 - 它更改浏览器中的 url,而不触发任何 Angular 内部结构,不幸的是,它替换了历史记录中的最新位置,而不是将新位置推到顶部。
如果不将服务添加到组件中provider:
列表中您将不会获得此服务的新实例。只需在以下位置注册即可使服务全球化bootstrap(AppComponent, [MyGlobalService])
.
实施CanReuse https://angular.io/docs/ts/latest/api/router/CanReuse-interface.html也可以看看Angular 2:在不同组件之间交换而不破坏它们 https://stackoverflow.com/questions/33648355/angular-2-swapping-between-different-components-without-destroying-them可能有助于防止在重用同一路由时重新初始化组件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)