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

Por que colocar o "this.user$ = this.userService.getUser();" no OnInit quando no HeaderComponent está no construtor?

A lógica pros dois não deveria ser parecida? Eu quero entender, porque em um optamos por colocar no OnInit e no outro no constructor?

Qualquer dúvida, olha o meu header:

import { Component } from '@angular/core';
import { Observable } from 'rxjs';
import { User } from '../user/user';
import { UserService } from '../user/user.service';
import { Router } from '@angular/router';

@Component({
    selector: 'ap-header',
    templateUrl: './header.component.html'
})
export class HeaderComponent {
     user$: Observable<User>;

     constructor(private userService: UserService, private router: Router) {
         this.user$ = userService.getUser();
     }

     logout() {
         this.userService.logout();
         this.router.navigate(['']);
     }
}
3 respostas
solução!

Fala ai Mauricio, tudo bem? Vamos lá:

A lógica pros dois não deveria ser parecida? Eu quero entender, porque em um optamos por colocar no OnInit e no outro no constructor?

Normalmente é uma boa prática deixar o constructor apenas para injeção de dependência e inicialização de dados.

Nesse caso por ser uma chamada para uma API e uma função assíncrona o ideal seria realizá-la no onInit.

Acho que acabou passando despercebido pelo instrutor durante a gravação da aula.

Espero ter ajudado.

Obrigado Professor.

Magina Mauricio, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software