Gostaria apenas de complementar sobre o quê foi dito neste tópico/dúvida: https://cursos.alura.com.br/forum/topico-funcionamento-do-input-pai-e-filho-300948
Temos que lembrar que o Angular é um framework Javascript, e JS é uma linguagem Orientada a Objetos. O que acontece nesta situação é que nós temos 2 referências para um mesmo objeto, que no caso é a Lista de Pensamentos. Vejamos o método abaixo:
listarFavoritos() {
this.temMaisPensamentos = true;
this.paginaAtual = 1;
this.favoritos = true;
this.pensamentoService.listar(this.paginaAtual, this.filtro, this.favoritos).subscribe(listaPensamentos => {
this.listaPensamentos = listaPensamentos;
this.listaFavoritos = listaPensamentos;
})
}
Quando este método é chamado, o serviço faz a requisição no servidor, pega a resposta dele que é a Lista de Pensamentos e cria um objeto para esta lista, depois gera 2 referências para este objeto que são listaPensamentos e listaFavoritos, porém o objeto é um só, o que muda é apenas a referencia. Portanto quando o método "atualizarFavoritos()" remove o pensamento "desfavoritado" da "listaFavoritos", esta mudança é refletida em "listaPensamentos" pois ambos referenciam a mesma lista, logo qualquer alteração em um vai refletir no outro.
atualizarFavoritos() {
this.pensamentoService.mudarFavorito(this.pensamento).subscribe(() => {
this.listaFavoritos.splice(this.listaFavoritos.indexOf(this.pensamento), 1);
});
}