¿Por qué en auth.guard.ts accedemos a user$ directamente con <strong>this.authService.user$.pile</strong> pero en el resto de componentes...

Luis Márquez

Luis Márquez

Pregunta
studenthace 2 años

¿Por qué en auth.guard.ts accedemos a user$ directamente con this.authService.user$.pile pero en el resto de componentes como nav y profile nos suscribimos con this.authService.user$.subscribe() ?

1 respuestas
para escribir tu comentario
    Daniel Meza

    Daniel Meza

    studenthace 2 años

    Buena observación. Un

    Guard
    en este caso implementa la interface
    CanActivate
    . Que lo fuerza a implementar la función
    canActivate
    que debe devolver una respuesta de alguno de los siguientes tipos:
    Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree

    Primero, esto devolvía:

    const token = this._tokenService.getToken(); if (!token) { this._router.navigate(['/home']); return false; } return true;

    Es correcto, devuelve un

    boolean
    .

    En el caso que mencionas. Está devolviendo un

    Observable
    que internamente se resolverá con un
    boolean
    .

    return this._authService.user$ .pipe( map(user => { if(!user) { this._router.navigate(['/home']); return false; } return true; }) )

    Básicamente le está diciendo al guard.

    Ten este observable de usuario, que si hay un usuario logueado, te lo mostrará. Pero, si hay alguno, devuelve un

    true
    , de lo contrario un
    false

    Esta lógica está dentro del

    pipe
    donde a través del operador
    map
    se transforma la respuesta a
    true
    o
    false
    en cuestión de si hay un usuario logueado o no.

Curso de Angular Router: Lazy Loading y Programación Modular

Curso de Angular Router: Lazy Loading y Programación Modular

Configura rutas avanzadas con Angular Router, activando Lazy Loading y programación modular. Simplifica tu eCommerce con rutas dinámicas y vistas anidadas. Protege con guardianes y aprovecha deployments automáticos en Netlify.

Curso de Angular Router: Lazy Loading y Programación Modular
Curso de Angular Router: Lazy Loading y Programación Modular

Curso de Angular Router: Lazy Loading y Programación Modular

Configura rutas avanzadas con Angular Router, activando Lazy Loading y programación modular. Simplifica tu eCommerce con rutas dinámicas y vistas anidadas. Protege con guardianes y aprovecha deployments automáticos en Netlify.