Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

355
Vistas
devolver booleano en lugar de suscribirse a canActivate

Tengo un componente protegido con canActivate guard. El Authguard en la función checkLogin se suscribe desde un observable pero no sé cómo devolver un valor booleano a canActivate.

guardia.servicio.ts

 canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { let url: string = state.url; return this.checkLogin(url); } public checkService:boolean; checkLogin(url: string):boolean { return this.loadAppSettings().subscribe(res=>{ console.log(this.checkservice); if (this.checkservice == true) { return true; } else{ this.router.navigate(['/error-user']); return false; } }); }//checkLogin throws error as type subscription is not assignable to type boolean

Entonces, lo que quiero es que si this.checkService es verdadero, solo debería devolver verdadero y el usuario debería poder aterrizar en la ruta protegida, pero si es falso, debería navegar a error-user .

Angular2 - return boolean with subscribe to canActivate esta pregunta es similar a la mía pero no pudo resolver mi problema con ella.

¿Alguien puede ayudar aquí?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

canActivate también puede devolver un observable, consulte la definición CanActivate-interface . Simplemente cambie sus tipos de devolución en consecuencia.

 canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { let url: string = state.url; return this.checkLogin(url); } public checkService:boolean; checkLogin(url: string):Observable<boolean> { return this.loadAppSettings().map(res=>{ console.log(this.checkservice); if (this.checkservice == true) { return true; } else{ this.router.navigate(['/error-user']); return false; } }); }
about 4 years ago · Santiago Trujillo Denunciar

0

También podemos devolver Promise como...

 canActivate( next: ActivatedRouteSnapshot, state: RouterStateSnapshot ): Promise<boolean> { return new Promise<boolean>(resolve => { this.service .function() .toPromise() .then((res) => { if(condition) { resolve(true); } else { this.router.navigate(["login"]); resolve(false); } }) .catch(() => { this.router.navigate(["login"]); resolve(false); }); }); }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda