路由参数在守卫中不可用
Route params not available in guards
为什么id
在下面的守卫中不可用?
@Injectable()
export class ProjectDetailsGuard implements CanActivate {
constructor(private activatedRoute: ActivatedRoute) { }
canActivate() {
const id = this.activatedRoute.snapshot.params['id'];
console.log(id); // <-- undefined
}
}
相同的代码在组件内部实现时完美运行。
ActivatedRoute
只有路由激活后才能提供参数。如果需要在激活之前获取 params
即在 canActivate
方法中,请尝试使用 ActivatedRouteSnapshot
canActivate(activatedRoute: ActivatedRouteSnapshot) {
const id = activatedRoute.params['id'];
console.log(id);
}
为什么id
在下面的守卫中不可用?
@Injectable()
export class ProjectDetailsGuard implements CanActivate {
constructor(private activatedRoute: ActivatedRoute) { }
canActivate() {
const id = this.activatedRoute.snapshot.params['id'];
console.log(id); // <-- undefined
}
}
相同的代码在组件内部实现时完美运行。
ActivatedRoute
只有路由激活后才能提供参数。如果需要在激活之前获取 params
即在 canActivate
方法中,请尝试使用 ActivatedRouteSnapshot
canActivate(activatedRoute: ActivatedRouteSnapshot) {
const id = activatedRoute.params['id'];
console.log(id);
}