我有一个简单的路由器设置Angular 2.当我刷新我的页面路由器时:路由器对象的url值与文件对location.hash属性的值不同。
所以我说router.url
我得到"/"
但是当我在同一个断点上运行document.location.hash
时,我得到"#/thing/edit;name=asdasdasdsa"
为什么它不能识别这个哈希?一旦重新加载完成,它工作正常,我有......
{provide: LocationStrategy, useClass: HashLocationStrategy}
另外,我正在使用CanActivate Guard。
答案 0 :(得分:0)
到目前为止,我目前唯一的解决方案是将router.navigate
包裹在setTimeout
中。我真的想要一个更好的选择。
喜欢这个......
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
) {
let nextUrl = route.url[0].path;
return this.authService.authenticate().map( (message) => {
if (message["isAuthenticated"]) {
// TODO: Super hacky
setTimeout(() => {
this.authService.navigateToPage(nextUrl);
});
return true;
}
return false;
});
}