根据路由滚动到init上的给定位置



在我的页面上有几个组件一个接一个,如:

<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)
      //}
})

相关内容

  • 没有找到相关文章

最新更新