在我的页面上有几个组件一个接一个,如:
<about></about>
<contact></contact>
等。
当导航链接被击中时,我使用ng2-page-scroll
滚动到给定的部分,但我无法在应用程序初始化上滚动到给定的部分。
所以当用户第一次打开路由中有/contact
的页面时,它会向下滚动到contact on init,而不是停留在顶部。
if(this.router.url != '/') {
let pageScrollInstance: PageScrollInstance = PageScrollInstance.simpleInstance(this.document, '#'+this.router.url.substring(1));
this.pageScrollService.start(pageScrollInstance);
}
在构造函数中,但它在路由器在router.url
上设置路由之前触发
我已经设法在路由器设置之前正常使用window.location.href.split("/").pop()
来获取地址,但这发生在组件实际呈现之前,它滚动到错误的位置。
是否有一个钩子,在整个应用设置了路由后触发一次?
这样,您就可以将NavigationEnd url
存储到任何变量(在服务中),并在整个应用程序中使用它。
这可以用来(在AppComponent中)触发url之间的更改。
router.events.subscribe(event => {
//if (event instanceof NavigationStart) {
console.log('event', event)
//}
})