Why isn't id
available in the below guard?
@Injectable()
export class ProjectDetailsGuard implements CanActivate {
constructor(private activatedRoute: ActivatedRoute) { }
canActivate() {
const id = this.activatedRoute.snapshot.params['id'];
console.log(id); // <-- undefined
}
}
The same code works perfectly when implemented inside components.
The ActivatedRoute
can provide params only after the route is activated. If need to get params
before it is activated i.e in canActivate
method, try with ActivatedRouteSnapshot
canActivate(activatedRoute: ActivatedRouteSnapshot) {
const id = activatedRoute.params['id'];
console.log(id);
}