Comunicação Entre Componentes no Angular
Como Eles Estão Conectados?
O TaskListComponent
irá gerenciar um array de tarefas, onde cada tarefa é um objeto com os campos id
, title
e completed
. Para exibir cada tarefa, utilizaremos o TaskComponent
.
Além disso, o TaskComponent
irá se comunicar com seu componente pai sobre ações do usuário, como quando uma tarefa deve ser excluída ou marcada como concluída. Essa interação ocorrerá por meio da emissão de eventos.
Implementação da Lógica do TaskListComponent
Vamos criar um componente responsável por gerenciar a lista de tarefas. Dentro dele, definiremos um array de tarefas e também adicionaremos dois métodos — deleteTask()
e toggleStatus()
— para lidar com o gerenciamento das tarefas.
task-list.ts
task-list.html
task-list.css
- A lista de tarefas (
tasks
) é gerenciada dentro do componente, tornando oTaskListComponent
o controlador central; - O método
deleteTask()
filtra a tarefa pelo seuid
; - O método
toggleStatus()
localiza a tarefa peloid
e alterna o status decompleted
.
Este código utiliza a diretiva *ngFor
para percorrer o array tasks
e criar um TaskComponent
para cada tarefa.
Analisaremos com mais detalhes como o *ngFor
funciona na próxima seção.
-
[task]="task"
— passa a tarefa atual para o componente filho para que ele possa exibi-la; -
(onDelete)="deleteTask($event)"
— escuta o eventoonDelete
do componente filho e chamadeleteTask()
para remover a tarefa; -
(onToggle)="toggleStatus($event)"
— escuta o eventoonToggle
e chamatoggleStatus()
para alterar o status da tarefa.
Decoradores: @Input() e @Output()
Agora é hora de conectar o TaskComponent
com o TaskListComponent
, e para isso, utilizaremos os decoradores @Input()
e @Output()
.
No Angular, os decoradores @Input()
e @Output()
são ferramentas essenciais para a comunicação entre componentes. Eles permitem passar dados para dentro de um componente e emitir eventos para fora de um componente. Veja um breve resumo:
Aqui está um exemplo de como eles funcionam no TaskComponent
:
task.ts
task.html
task.css
No nosso caso, task
é o objeto passado do componente pai TaskListComponent
para o TaskComponent
.
Quando o usuário exclui uma tarefa ou alterna seu status, o TaskComponent
emite eventos que o componente pai escuta.
@Output()
e EventEmitter
são usados para notificar o componente pai quando algo acontece no componente filho. Esses decoradores permitem que o componente filho comunique ações como exclusão de tarefas ou alterações de status ao componente pai.
O método deleteTask()
é chamado quando o usuário deseja excluir uma tarefa. Ele emite o id
da tarefa, permitindo que o pai remova a tarefa de sua lista.
O método toggleTask()
alterna o status de conclusão da tarefa e informa o componente pai sobre essa alteração.
Como Tudo Funciona Junto
-
TaskListComponent
passa uma tarefa paraTaskComponent
usando@Input()
; -
O usuário interage com a tarefa (como clicando em "Delete");
-
TaskComponent
emite um evento (onDelete
ouonToggle
) com oid
da tarefa; -
TaskListComponent
captura o evento e atualiza a lista de tarefas; -
O Angular atualiza automaticamente a interface com base nos dados atualizados.
Dessa forma, @Input()
e @Output()
permitem uma comunicação limpa e eficiente entre componentes, mantendo a estrutura organizada e reativa.
1. O que o decorador @Input()
faz no Angular?
2. Qual é o propósito do EventEmitter
no Angular?
3. No TaskComponent
, o que faz o decorador @Output()
?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.13
Comunicação Entre Componentes no Angular
Deslize para mostrar o menu
Como Eles Estão Conectados?
O TaskListComponent
irá gerenciar um array de tarefas, onde cada tarefa é um objeto com os campos id
, title
e completed
. Para exibir cada tarefa, utilizaremos o TaskComponent
.
Além disso, o TaskComponent
irá se comunicar com seu componente pai sobre ações do usuário, como quando uma tarefa deve ser excluída ou marcada como concluída. Essa interação ocorrerá por meio da emissão de eventos.
Implementação da Lógica do TaskListComponent
Vamos criar um componente responsável por gerenciar a lista de tarefas. Dentro dele, definiremos um array de tarefas e também adicionaremos dois métodos — deleteTask()
e toggleStatus()
— para lidar com o gerenciamento das tarefas.
task-list.ts
task-list.html
task-list.css
- A lista de tarefas (
tasks
) é gerenciada dentro do componente, tornando oTaskListComponent
o controlador central; - O método
deleteTask()
filtra a tarefa pelo seuid
; - O método
toggleStatus()
localiza a tarefa peloid
e alterna o status decompleted
.
Este código utiliza a diretiva *ngFor
para percorrer o array tasks
e criar um TaskComponent
para cada tarefa.
Analisaremos com mais detalhes como o *ngFor
funciona na próxima seção.
-
[task]="task"
— passa a tarefa atual para o componente filho para que ele possa exibi-la; -
(onDelete)="deleteTask($event)"
— escuta o eventoonDelete
do componente filho e chamadeleteTask()
para remover a tarefa; -
(onToggle)="toggleStatus($event)"
— escuta o eventoonToggle
e chamatoggleStatus()
para alterar o status da tarefa.
Decoradores: @Input() e @Output()
Agora é hora de conectar o TaskComponent
com o TaskListComponent
, e para isso, utilizaremos os decoradores @Input()
e @Output()
.
No Angular, os decoradores @Input()
e @Output()
são ferramentas essenciais para a comunicação entre componentes. Eles permitem passar dados para dentro de um componente e emitir eventos para fora de um componente. Veja um breve resumo:
Aqui está um exemplo de como eles funcionam no TaskComponent
:
task.ts
task.html
task.css
No nosso caso, task
é o objeto passado do componente pai TaskListComponent
para o TaskComponent
.
Quando o usuário exclui uma tarefa ou alterna seu status, o TaskComponent
emite eventos que o componente pai escuta.
@Output()
e EventEmitter
são usados para notificar o componente pai quando algo acontece no componente filho. Esses decoradores permitem que o componente filho comunique ações como exclusão de tarefas ou alterações de status ao componente pai.
O método deleteTask()
é chamado quando o usuário deseja excluir uma tarefa. Ele emite o id
da tarefa, permitindo que o pai remova a tarefa de sua lista.
O método toggleTask()
alterna o status de conclusão da tarefa e informa o componente pai sobre essa alteração.
Como Tudo Funciona Junto
-
TaskListComponent
passa uma tarefa paraTaskComponent
usando@Input()
; -
O usuário interage com a tarefa (como clicando em "Delete");
-
TaskComponent
emite um evento (onDelete
ouonToggle
) com oid
da tarefa; -
TaskListComponent
captura o evento e atualiza a lista de tarefas; -
O Angular atualiza automaticamente a interface com base nos dados atualizados.
Dessa forma, @Input()
e @Output()
permitem uma comunicação limpa e eficiente entre componentes, mantendo a estrutura organizada e reativa.
1. O que o decorador @Input()
faz no Angular?
2. Qual é o propósito do EventEmitter
no Angular?
3. No TaskComponent
, o que faz o decorador @Output()
?
Obrigado pelo seu feedback!