Estoy aprendiendo angular 13 y estoy atascado en el punto, a continuación se muestra el código
este es mi archivo de servicio de autenticación
export class AuthService { loggedIn = false; isAuthenticated() { const promise = new Promise( (resolve, reject) => { setTimeout(() => { resolve(this.loggedIn); }, 800); } ); return promise; } }estoy recibiendo este error
este es mi archivo de servicio de protección de autenticación
import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, } from '@angular/router'; import { Observable } from 'rxjs'; import { AuthService } from './auth.service'; @Injectable() export class AuthGuardService implements CanActivate { constructor(private authService: AuthService, private router: Router) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean { return this.authService.isAuthenticated() .then( (authenticated: boolean) => { if (authenticated) { return true; } else { this.router.navigate(['/']); } } ); } }¿¿Alguien puede ayudarme??
Se olvidó de return false en su declaración else .
. . . if (authenticated) { return true; } else { this.router.navigate(['/']); return false; // <- add this here }Este problema ocurrió porque no hay retorno en su parte 'else'. Pruebe el siguiente código.
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean { return this.authService.isAuthenticated() .then( (authenticated: boolean) => { if (authenticated) { return true; } else { this.router.navigate(['/']); return false; } } ); }