Comunicación entre Componentes en Angular
¿Cómo están conectados?
El TaskListComponent
gestionará un arreglo de tareas, donde cada tarea es un objeto con los campos id
, title
y completed
. Para mostrar cada tarea, utilizaremos el TaskComponent
.
Además, TaskComponent
se comunicará con su componente padre sobre las acciones del usuario, como cuando una tarea debe eliminarse o marcarse como completada. Esta interacción ocurrirá mediante la emisión de eventos.
Implementación de la lógica de TaskListComponent
Crearemos un componente que será responsable de gestionar la lista de tareas. Dentro de él, definiremos un arreglo de tareas y también agregaremos dos métodos — deleteTask()
y toggleStatus()
— para manejar la gestión de tareas.
task-list.ts
task-list.html
task-list.css
- La lista de tareas (
tasks
) se gestiona dentro del componente, haciendo queTaskListComponent
sea el controlador central; - El método
deleteTask()
filtra la tarea por suid
; - El método
toggleStatus()
encuentra la tarea porid
y alterna su estadocompleted
.
Este código utiliza la directiva *ngFor
para iterar sobre el arreglo tasks
y crear un TaskComponent
para cada tarea.
Analizaremos más a fondo cómo funciona *ngFor
en la siguiente sección.
-
[task]="task"
— pasa la tarea actual al componente hijo para que pueda mostrarla; -
(onDelete)="deleteTask($event)"
— escucha el eventoonDelete
del hijo y llama adeleteTask()
para eliminar la tarea; -
(onToggle)="toggleStatus($event)"
— escucha el eventoonToggle
y llama atoggleStatus()
para cambiar el estado de la tarea.
Decoradores: @Input() y @Output()
Ahora es momento de conectar el TaskComponent
con el TaskListComponent
, y para ello, utilizaremos los decoradores @Input()
y @Output()
.
En Angular, los decoradores @Input()
y @Output()
son herramientas clave para la comunicación entre componentes. Permiten pasar datos a un componente y emitir eventos desde un componente. Aquí tienes una breve descripción:
Aquí tienes un ejemplo de cómo funcionan en el TaskComponent
:
task.ts
task.html
task.css
En nuestro caso, task
es el objeto que se pasa desde el componente padre TaskListComponent
al TaskComponent
.
Cuando el usuario elimina una tarea o cambia su estado, el TaskComponent
emite eventos que el componente padre escucha.
@Output()
y EventEmitter
se utilizan para notificar al componente padre cuando ocurre algún evento en el componente hijo. Estos decoradores permiten que el componente hijo comunique acciones como eliminaciones de tareas o cambios de estado al padre.
El método deleteTask()
se llama cuando el usuario desea eliminar una tarea. Emite el id
de la tarea, permitiendo que el padre elimine la tarea de su lista.
El método toggleTask()
alterna el estado de completado de la tarea e informa al componente padre sobre este cambio.
Cómo Funciona Todo en Conjunto
-
TaskListComponent
pasa una tarea aTaskComponent
usando@Input()
; -
El usuario interactúa con la tarea (como hacer clic en "Delete");
-
TaskComponent
emite un evento (onDelete
oonToggle
) con elid
de la tarea; -
TaskListComponent
captura el evento y actualiza la lista de tareas; -
Angular actualiza automáticamente la interfaz de usuario según los datos actualizados.
De esta manera, @Input()
y @Output()
permiten una comunicación limpia y eficiente entre componentes, manteniendo la estructura organizada y reactiva.
1. ¿Qué hace el decorador @Input()
en Angular?
2. ¿Cuál es el propósito de EventEmitter
en Angular?
3. En TaskComponent
, ¿qué hace el decorador @Output()
?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 3.13
Comunicación entre Componentes en Angular
Desliza para mostrar el menú
¿Cómo están conectados?
El TaskListComponent
gestionará un arreglo de tareas, donde cada tarea es un objeto con los campos id
, title
y completed
. Para mostrar cada tarea, utilizaremos el TaskComponent
.
Además, TaskComponent
se comunicará con su componente padre sobre las acciones del usuario, como cuando una tarea debe eliminarse o marcarse como completada. Esta interacción ocurrirá mediante la emisión de eventos.
Implementación de la lógica de TaskListComponent
Crearemos un componente que será responsable de gestionar la lista de tareas. Dentro de él, definiremos un arreglo de tareas y también agregaremos dos métodos — deleteTask()
y toggleStatus()
— para manejar la gestión de tareas.
task-list.ts
task-list.html
task-list.css
- La lista de tareas (
tasks
) se gestiona dentro del componente, haciendo queTaskListComponent
sea el controlador central; - El método
deleteTask()
filtra la tarea por suid
; - El método
toggleStatus()
encuentra la tarea porid
y alterna su estadocompleted
.
Este código utiliza la directiva *ngFor
para iterar sobre el arreglo tasks
y crear un TaskComponent
para cada tarea.
Analizaremos más a fondo cómo funciona *ngFor
en la siguiente sección.
-
[task]="task"
— pasa la tarea actual al componente hijo para que pueda mostrarla; -
(onDelete)="deleteTask($event)"
— escucha el eventoonDelete
del hijo y llama adeleteTask()
para eliminar la tarea; -
(onToggle)="toggleStatus($event)"
— escucha el eventoonToggle
y llama atoggleStatus()
para cambiar el estado de la tarea.
Decoradores: @Input() y @Output()
Ahora es momento de conectar el TaskComponent
con el TaskListComponent
, y para ello, utilizaremos los decoradores @Input()
y @Output()
.
En Angular, los decoradores @Input()
y @Output()
son herramientas clave para la comunicación entre componentes. Permiten pasar datos a un componente y emitir eventos desde un componente. Aquí tienes una breve descripción:
Aquí tienes un ejemplo de cómo funcionan en el TaskComponent
:
task.ts
task.html
task.css
En nuestro caso, task
es el objeto que se pasa desde el componente padre TaskListComponent
al TaskComponent
.
Cuando el usuario elimina una tarea o cambia su estado, el TaskComponent
emite eventos que el componente padre escucha.
@Output()
y EventEmitter
se utilizan para notificar al componente padre cuando ocurre algún evento en el componente hijo. Estos decoradores permiten que el componente hijo comunique acciones como eliminaciones de tareas o cambios de estado al padre.
El método deleteTask()
se llama cuando el usuario desea eliminar una tarea. Emite el id
de la tarea, permitiendo que el padre elimine la tarea de su lista.
El método toggleTask()
alterna el estado de completado de la tarea e informa al componente padre sobre este cambio.
Cómo Funciona Todo en Conjunto
-
TaskListComponent
pasa una tarea aTaskComponent
usando@Input()
; -
El usuario interactúa con la tarea (como hacer clic en "Delete");
-
TaskComponent
emite un evento (onDelete
oonToggle
) con elid
de la tarea; -
TaskListComponent
captura el evento y actualiza la lista de tareas; -
Angular actualiza automáticamente la interfaz de usuario según los datos actualizados.
De esta manera, @Input()
y @Output()
permiten una comunicación limpia y eficiente entre componentes, manteniendo la estructura organizada y reactiva.
1. ¿Qué hace el decorador @Input()
en Angular?
2. ¿Cuál es el propósito de EventEmitter
en Angular?
3. En TaskComponent
, ¿qué hace el decorador @Output()
?
¡Gracias por tus comentarios!