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

Pergunta de Juan Carlos Tavares que não foi respondida e eu gostaria de saber.

"Colocar um subscribe dentro do ngOnInit() como foi feito na atividade 08 da aula 04 não seria perigoso? Parece que o Angular vai ficar sempre executando código esperando mudança nos parâmetros da rota. Em algum momento ele faz um destroy desse observable?"

2 respostas

Pelo que eu pesquisei. O subscribe do actvatedRoute não precisa de unsubscribe

"Ao assinar um observável em um componente, você quase sempre organiza o cancelamento da assinatura quando o componente é destruído. Existem alguns observáveis ​​excepcionais onde isso não é necessário. Os observáveis ​​ActivatedRoute estão entre as exceções."

Fonte: https://stackoverflow.com/questions/41138081/do-i-have-to-unsubscribe-from-activatedroute-e-g-params-observables

ENTRE TANTO Por questões de boas práticas e desencargo da consciência é bom fazer o seguinte: Criar uma variável de inscrição assim, e atribuir o subscribe nela. Depois no ngOnDestroy destruí-la

import { Subscription } from 'rxjs';

inscricao: Subscription;

ngOnInit() {
   this.inscricao = this.activatedRoute.params.subscribe(
      (params) => {
        this.userName = params.userName;
        this.photos = this.activatedRoute.snapshot.data['photos']; 
      }
    );
}

ngOnDestroy() {
    this.inscricao.unsubscribe();
}
solução!

Fala ai Jocimar, tudo bem? É uma boa prática realizar o que você fez, ou seja, toda inscrição que a gente faz, passamos ela para uma variável e no destroy paramos de ouvir esse listener.

Isso porque em alguns momentos sujeiras podem acabar ficando no componente e as vezes o Angular não vai realizar o unsubscribe automaticamente.

Espero ter ajudado.