角度路由器 URL 在初始加载时始终指向 home

时间:2021-05-08 10:03:33

标签: angular angular-router

在进行 Angular 应用程序的初始加载时,router.url 始终指向主页 URL ('/')。 即使我使用域/某些路由打开应用程序,路由 url 也是“/”。

代码如下:

构造函数(私有路由器:路由器){}

ngOnInit() {
  console.log(this.router.url);
  setTimeout(() => {
    console.log(this.router.url);
  }, 100);
}

超时(100 毫秒)后,URL 正确。

StackBlitz example

预览时将此加载为初始路径:https://angular-epv4wn.stackblitz.io/home 并检查控制台。

SetTimeout 是解决方案,但我不想依赖于此。

1 个答案:

答案 0 :(得分:0)

路由器有很多事件,NavigationStart、GuardsCheck、RoutesRecognized、ResolveRoute... 您对 NavigationEnd 感兴趣,因为如果它存在于路由器或备用路由器中,它将给出正确的路径

所以你需要等待导航完成...

 this.router.events
      .pipe(
        filter(event => event instanceof NavigationEnd)
      )
      .subscribe(url=> {
        console.log(this.router.url)
        console.log(event.url);
      });

两个控制台都会给你 /home

相关问题