问题描述
this.router.navigate(['results'],{ state });
一旦到达那里,我就可以在构造器中获取数据
constructor(private router: Router) {
const { state } = this.router.getCurrentNavigation().extras;
}
我想放一个警卫来检查此数据是否存在,否则导航到其他地方
@Injectable()
export default class RouteHasDataGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean {
return !!state.root.data;
}
}
但是这不起作用。你能帮我吗?
解决方法
您可以访问以下状态:
@Injectable()
export default class RouteHasDataGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean {
return !!window.history.state;
}
}
,
不要在保护构造函数中阅读额外内容。阅读 canActivate() 方法中的额外内容。
@Injectable()
export default class RouteHasDataGuard implements CanActivate {
constructor(private router: Router) {}
canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean {
const { state } = this.router.getCurrentNavigation().extras;
return !!state.root.data;
}
}