Aula 05: Comunicação entre Componentes 🔄
Nesta aula, vamos aprender como os componentes "conversam" entre si em uma arquitetura hierárquica usando @Input e @Output.
📢 Fluxo de Dados Hierárquico
No Angular, os dados geralmente fluem do pai para o filho e os eventos do filho para o pai.
graph TD
P[Componente Pai] -- "@Input" --> F[Componente Filho]
F -- "@Output (EventEmitter)" --> P
📥 Recebendo Dados: @Input()
O decorator @Input() permite que o componente filho receba valores vindo de seu pai.
No Componente Filho (.ts):
No Componente Pai (.html):
📤 Enviando Eventos: @Output()
O decorator @Output() combinado com EventEmitter permite que o filho envie notificações ou dados de volta para o pai.
No Componente Filho (.ts):
No Componente Pai (.html):
🧠 Smart vs Dumb Components
- Smart Components (Pai): Gerenciam dados, fazem chamadas de API e cuidam da lógica de negócio.
- Dumb Components (Filho): Apenas exibem dados recebidos via
@Inpute notificam o pai via@Output. São altamente reutilizáveis.
🚀 Prática: Lista de Contatos
Vamos construir um sistema onde: 1. O Pai gerencia uma lista de contatos. 2. O Filho exibe o detalhe de um único contato (@Input). 3. O Filho tem um botão "Excluir" que notifica o pai para remover aquele contato da lista (@Output).
🏁 Mini-Projeto da Aula
Crie um componente Contador. O componente pai deve passar o valor inicial do contador para o filho. O filho deve ter botões de "+" e "-". Toda vez que o valor mudar no filho, ele deve emitir um evento para o pai atualizar o total geral na tela dele.