Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Possível correção, caso o angular instalado seja o 15

No auth.guard.ts não tem mais a necessidade de implementar o CanActivate na class o meu funcionou da seguinte maneira:

import { Observable } from 'rxjs';
import {
  ActivatedRouteSnapshot,
  Router,
  RouterStateSnapshot,
} from '@angular/router';
import { UserService } from './../user/user.service';
import { Injectable } from '@angular/core';

@Injectable({ providedIn: 'root' })
export class AuthGuard {
  constructor(private userService: UserService, private router: Router) {}

  canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): boolean | Observable<boolean> | Promise<boolean> {
    if (this.userService.islogged()) {
      this.router.navigate(['user', this.userService.getUserName()]);
      return false;
    }
    return true;
  }
}

user.service.ts:

caso o userName esteja dando algum problema apenas adicione uma exclamação:

  private userName!: string;

O restante pode manter igual funcionou para mim!

2 respostas
solução!

Olá Ismael, tudo bem?

Muito obrigada por compartilhar sua sugestão de correção para o caso de o Angular instalado ser o 15. Realmente, é importante estar atento às diferenças de versões do Angular para garantir o bom funcionamento do código.

Sua sugestão de alteração no auth.guard.ts parece ser uma boa solução para o problema. Além disso, é interessante saber que, caso o userName esteja dando algum problema, basta adicionar uma exclamação na declaração da variável no user.service.ts.

Agradeço novamente por compartilhar sua solução e espero que outros estudantes possam se beneficiar dessa informação.

Espero ter ajudado e bons estudos!

Um abraço e bons estudos.

Obrigado pelo apoio Lorena e espero que ajude mesmo! :) Abraço!