0

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

这是代码:

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

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

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

请参阅StackBlitz 示例

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

SetTimeout 是解决方法,但我不想依赖这个。

4

1 回答 1

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

于 2021-05-08T10:36:55.260 回答