1
resposta

Nome do usuario logado undefined

Ao logar com o usuário, o HTM não se comporta como deveria, no canto superior direito o else do html esta entrando em ação.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeHTML

<header class="sticky-top">
  <nav class="navbar navbar-light bg-white">
    <a class="navbar-brand">Trupe4Patas Book</a>
    <div *ngIf="user$ | async as user">
      <div *ngIf="user.nome; else login">
        <i class="fa fa-user-circle mr-1"></i>
        <a  class="mr-1">{{ user.nome }}</a>
        <a (click)="logout()">Logout</a>
      </div>
    </div>
  </nav>

  <ng-template #login>
    <span class="navbar-text">
      <a [routerLink]="['']">Login</a>
    </span>
  </ng-template>
</header>

ts

import { Component, OnInit } from '@angular/core';
import {UsuarioService} from "../../autenticacao/usuario/usuario.service";
import {Router} from "@angular/router";

@Component({
  selector: 'app-cabecalho',
  templateUrl: './cabecalho.component.html',
  styleUrls: ['./cabecalho.component.css']
})
export class CabecalhoComponent {

  user$ = this.usuarioService.retornaUsuario();
  usuario: string | undefined;

  constructor(
    private usuarioService: UsuarioService,
    private router: Router,
  ) {
    this.user$.subscribe({
      next: (user) => {
        console.log(user)
        this.usuario = user.nome
        console.log(this.usuario)
      },
      error: (err) => console.log(err)
    })
  }

  logout() {
    this.usuarioService.logout();
    this.router.navigateByUrl('');
  }

}

Fiz uns consoles log no componente ts do cabecalho e vi que vem undefined ao tentar pegar o nome do usuário

console do browser Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oi Thiago, tudo bem?

Pelo que pude entender, você está tendo problemas para exibir o nome do usuário logado no canto superior direito do seu HTML. Ao fazer alguns testes, você percebeu que está recebendo o valor "undefined" ao tentar pegar o nome do usuário no componente TS do cabeçalho.

Pelo seu código, parece que você está utilizando o operador "async" para obter o usuário logado e exibir suas informações no HTML. Uma possível solução para o seu problema seria verificar se o objeto "user" está sendo retornado corretamente pelo serviço "UsuarioService". Você pode fazer isso adicionando um console.log no início do método "retornaUsuario()" para verificar se ele está retornando o objeto correto.

Outra possível solução seria verificar se o nome do usuário está sendo salvo corretamente no objeto "user" dentro do método "next" do subscribe. Você pode adicionar um console.log para verificar se o nome do usuário está sendo atribuído corretamente à variável "usuario".

Espero que essas sugestões possam ajudá-lo a resolver o seu problema.

O post foi fechado pois o curso foi descontinuado e não faz mais parte da grade oficial