在进行 Angular 应用程序的初始加载时,router.url 始终指向主页 URL ('/')。 即使我使用域/某些路由打开应用程序,路由 url 也是“/”。
代码如下:
构造函数(私有路由器:路由器){}
ngOnInit() {
console.log(this.router.url);
setTimeout(() => {
console.log(this.router.url);
}, 100);
}
超时(100 毫秒)后,URL 正确。
预览时将此加载为初始路径:https://angular-epv4wn.stackblitz.io/home 并检查控制台。
SetTimeout 是解决方案,但我不想依赖于此。
答案 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