Comunicazione tra Componenti in Angular
Come sono collegati?
Il TaskListComponent gestirà un array di task, dove ogni task è un oggetto con i campi id, title e completed. Per visualizzare ogni task, utilizzeremo il TaskComponent.
Inoltre, il TaskComponent comunicherà con il suo componente genitore riguardo alle azioni dell'utente, come quando un task deve essere eliminato o contrassegnato come completato. Questa interazione avverrà tramite l'emissione di eventi.
Implementazione della logica di TaskListComponent
Creiamo un componente che sarà responsabile della gestione dell'elenco dei task. Al suo interno, definiremo un array di task e aggiungeremo anche due metodi — deleteTask() e toggleStatus() — per gestire i task.
task-list.ts
task-list.html
task-list.css
- L'elenco delle attività (
tasks) è gestito all'interno del componente, rendendoTaskListComponentil controller centrale; - Il metodo
deleteTask()filtra l'attività tramite il suoid; - Il metodo
toggleStatus()trova l'attività tramiteide ne alterna lo statocompleted.
Questo codice utilizza la direttiva *ngFor per iterare sull'array tasks e creare un TaskComponent per ogni attività.
Analizzeremo più in dettaglio il funzionamento di *ngFor nella prossima sezione.
-
[task]="task"— passa l'attività corrente al componente figlio affinché possa visualizzarla; -
(onDelete)="deleteTask($event)"— ascolta l'eventoonDeletedal componente figlio e richiamadeleteTask()per rimuovere l'attività; -
(onToggle)="toggleStatus($event)"— ascolta l'eventoonTogglee richiamatoggleStatus()per modificare lo stato dell'attività.
Decoratori: @Input() e @Output()
Ora è il momento di collegare il TaskComponent con il TaskListComponent, e per farlo utilizzeremo i decoratori @Input() e @Output().
In Angular, i decoratori @Input() e @Output() sono strumenti fondamentali per la comunicazione tra componenti. Consentono di passare dati a un componente e di emettere eventi da un componente. Ecco una breve panoramica:
Ecco un esempio di come funzionano nel TaskComponent:
task.ts
task.html
task.css
Nel nostro caso, task è l'oggetto passato dal componente genitore TaskListComponent al TaskComponent.
Quando l'utente elimina un'attività o ne cambia lo stato, il TaskComponent emette eventi a cui il componente genitore si iscrive.
@Output() e EventEmitter vengono utilizzati per notificare al componente genitore quando si verifica un evento nel componente figlio. Questi decoratori permettono al componente figlio di comunicare azioni come l'eliminazione di un'attività o la modifica dello stato al genitore.
Il metodo deleteTask() viene chiamato quando l'utente desidera eliminare un'attività. Emette l'id dell'attività, consentendo al genitore di rimuovere l'attività dal proprio elenco.
Il metodo toggleTask() cambia lo stato di completamento dell'attività e informa il componente genitore di questa modifica.
Come Funziona Tutto Insieme
-
TaskListComponentpassa un'attività aTaskComponentutilizzando@Input(); -
L'utente interagisce con l'attività (ad esempio cliccando su "Elimina");
-
TaskComponentemette un evento (onDeleteoonToggle) con l'iddell'attività; -
TaskListComponentintercetta l'evento e aggiorna l'elenco delle attività; -
Angular aggiorna automaticamente l'interfaccia utente in base ai dati aggiornati.
In questo modo, @Input() e @Output() consentono una comunicazione pulita ed efficiente tra i componenti, mantenendo la struttura organizzata e reattiva.
1. Cosa fa il decoratore @Input() in Angular?
2. Qual è lo scopo di EventEmitter in Angular?
3. Nel TaskComponent, cosa fa il decoratore @Output()?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 3.13
Comunicazione tra Componenti in Angular
Scorri per mostrare il menu
Come sono collegati?
Il TaskListComponent gestirà un array di task, dove ogni task è un oggetto con i campi id, title e completed. Per visualizzare ogni task, utilizzeremo il TaskComponent.
Inoltre, il TaskComponent comunicherà con il suo componente genitore riguardo alle azioni dell'utente, come quando un task deve essere eliminato o contrassegnato come completato. Questa interazione avverrà tramite l'emissione di eventi.
Implementazione della logica di TaskListComponent
Creiamo un componente che sarà responsabile della gestione dell'elenco dei task. Al suo interno, definiremo un array di task e aggiungeremo anche due metodi — deleteTask() e toggleStatus() — per gestire i task.
task-list.ts
task-list.html
task-list.css
- L'elenco delle attività (
tasks) è gestito all'interno del componente, rendendoTaskListComponentil controller centrale; - Il metodo
deleteTask()filtra l'attività tramite il suoid; - Il metodo
toggleStatus()trova l'attività tramiteide ne alterna lo statocompleted.
Questo codice utilizza la direttiva *ngFor per iterare sull'array tasks e creare un TaskComponent per ogni attività.
Analizzeremo più in dettaglio il funzionamento di *ngFor nella prossima sezione.
-
[task]="task"— passa l'attività corrente al componente figlio affinché possa visualizzarla; -
(onDelete)="deleteTask($event)"— ascolta l'eventoonDeletedal componente figlio e richiamadeleteTask()per rimuovere l'attività; -
(onToggle)="toggleStatus($event)"— ascolta l'eventoonTogglee richiamatoggleStatus()per modificare lo stato dell'attività.
Decoratori: @Input() e @Output()
Ora è il momento di collegare il TaskComponent con il TaskListComponent, e per farlo utilizzeremo i decoratori @Input() e @Output().
In Angular, i decoratori @Input() e @Output() sono strumenti fondamentali per la comunicazione tra componenti. Consentono di passare dati a un componente e di emettere eventi da un componente. Ecco una breve panoramica:
Ecco un esempio di come funzionano nel TaskComponent:
task.ts
task.html
task.css
Nel nostro caso, task è l'oggetto passato dal componente genitore TaskListComponent al TaskComponent.
Quando l'utente elimina un'attività o ne cambia lo stato, il TaskComponent emette eventi a cui il componente genitore si iscrive.
@Output() e EventEmitter vengono utilizzati per notificare al componente genitore quando si verifica un evento nel componente figlio. Questi decoratori permettono al componente figlio di comunicare azioni come l'eliminazione di un'attività o la modifica dello stato al genitore.
Il metodo deleteTask() viene chiamato quando l'utente desidera eliminare un'attività. Emette l'id dell'attività, consentendo al genitore di rimuovere l'attività dal proprio elenco.
Il metodo toggleTask() cambia lo stato di completamento dell'attività e informa il componente genitore di questa modifica.
Come Funziona Tutto Insieme
-
TaskListComponentpassa un'attività aTaskComponentutilizzando@Input(); -
L'utente interagisce con l'attività (ad esempio cliccando su "Elimina");
-
TaskComponentemette un evento (onDeleteoonToggle) con l'iddell'attività; -
TaskListComponentintercetta l'evento e aggiorna l'elenco delle attività; -
Angular aggiorna automaticamente l'interfaccia utente in base ai dati aggiornati.
In questo modo, @Input() e @Output() consentono una comunicazione pulita ed efficiente tra i componenti, mantenendo la struttura organizzata e reattiva.
1. Cosa fa il decoratore @Input() in Angular?
2. Qual è lo scopo di EventEmitter in Angular?
3. Nel TaskComponent, cosa fa il decoratore @Output()?
Grazie per i tuoi commenti!