Kommunikation Mellan Komponenter i Angular
Hur är de sammankopplade?
TaskListComponent
kommer att hantera en array av uppgifter, där varje uppgift är ett objekt med fälten id
, title
och completed
. För att visa varje uppgift kommer vi att använda TaskComponent
.
Dessutom kommer TaskComponent
att kommunicera med sin föräldrakomponent om användaråtgärder, såsom när en uppgift ska tas bort eller markeras som slutförd. Denna interaktion sker genom händelseutlösning.
Implementering av logik för TaskListComponent
Skapa en komponent som ansvarar för att hantera uppgiftslistan. Inuti den definieras en array av uppgifter samt två metoder — deleteTask()
och toggleStatus()
— för att hantera uppgifterna.
task-list.ts
task-list.html
task-list.css
- Listan över uppgifter (
tasks
) hanteras inom komponenten, vilket görTaskListComponent
till den centrala kontrollenheten; - Metoden
deleteTask()
filtrerar bort uppgiften med dessid
; - Metoden
toggleStatus()
hittar uppgiften medid
och växlar desscompleted
-status.
Denna kod använder direktivet *ngFor
för att iterera genom arrayen tasks
och skapa en TaskComponent
för varje uppgift.
Vi kommer att titta närmare på hur *ngFor
fungerar i nästa avsnitt.
-
[task]="task"
— skickar den aktuella uppgiften till barnkomponenten så att den kan visas; -
(onDelete)="deleteTask($event)"
— lyssnar påonDelete
-händelsen från barnkomponenten och anropardeleteTask()
för att ta bort uppgiften; -
(onToggle)="toggleStatus($event)"
— lyssnar påonToggle
-händelsen och anropartoggleStatus()
för att ändra uppgiftens status.
Dekoratorer: @Input() och @Output()
Nu är det dags att koppla samman TaskComponent
med TaskListComponent
, och för detta använder vi dekoratorerna @Input()
och @Output()
.
I Angular är dekoratorerna @Input()
och @Output()
centrala verktyg för kommunikation mellan komponenter. De möjliggör att data skickas in i en komponent och att händelser emitteras ut från en komponent. Här är en snabb översikt:
Här är ett exempel på hur de fungerar i TaskComponent
:
task.ts
task.html
task.css
I vårt fall är task
objektet som skickas från föräldrakomponenten TaskListComponent
till TaskComponent
.
När användaren antingen tar bort en uppgift eller ändrar dess status, skickar TaskComponent
ut händelser som föräldrakomponenten lyssnar på.
@Output()
och EventEmitter
används för att meddela föräldrakomponenten när något händer i barnkomponenten. Dessa dekoratörer tillåter barnkomponenten att kommunicera åtgärder som borttagning av uppgifter eller statusändringar till föräldern.
Metoden deleteTask()
anropas när användaren vill ta bort en uppgift. Den emitterar uppgiftens id
, vilket gör det möjligt för föräldern att ta bort uppgiften från sin lista.
Metoden toggleTask()
växlar uppgiftens slutförandestatus och informerar föräldrakomponenten om denna förändring.
Hur allt fungerar tillsammans
-
TaskListComponent
skickar en uppgift tillTaskComponent
med hjälp av@Input()
; -
Användaren interagerar med uppgiften (till exempel genom att klicka på "Delete");
-
TaskComponent
emitterar en händelse (onDelete
elleronToggle
) med uppgiftensid
; -
TaskListComponent
fångar händelsen och uppdaterar uppgiftslistan; -
Angular uppdaterar automatiskt användargränssnittet baserat på de uppdaterade uppgifterna.
På detta sätt möjliggör @Input()
och @Output()
en tydlig och effektiv kommunikation mellan komponenter, vilket håller strukturen organiserad och reaktiv.
1. Vad gör dekoratören @Input()
i Angular?
2. Vad är syftet med EventEmitter
i Angular?
3. Vad gör dekoratorn TaskComponent
i @Output()
?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.13
Kommunikation Mellan Komponenter i Angular
Svep för att visa menyn
Hur är de sammankopplade?
TaskListComponent
kommer att hantera en array av uppgifter, där varje uppgift är ett objekt med fälten id
, title
och completed
. För att visa varje uppgift kommer vi att använda TaskComponent
.
Dessutom kommer TaskComponent
att kommunicera med sin föräldrakomponent om användaråtgärder, såsom när en uppgift ska tas bort eller markeras som slutförd. Denna interaktion sker genom händelseutlösning.
Implementering av logik för TaskListComponent
Skapa en komponent som ansvarar för att hantera uppgiftslistan. Inuti den definieras en array av uppgifter samt två metoder — deleteTask()
och toggleStatus()
— för att hantera uppgifterna.
task-list.ts
task-list.html
task-list.css
- Listan över uppgifter (
tasks
) hanteras inom komponenten, vilket görTaskListComponent
till den centrala kontrollenheten; - Metoden
deleteTask()
filtrerar bort uppgiften med dessid
; - Metoden
toggleStatus()
hittar uppgiften medid
och växlar desscompleted
-status.
Denna kod använder direktivet *ngFor
för att iterera genom arrayen tasks
och skapa en TaskComponent
för varje uppgift.
Vi kommer att titta närmare på hur *ngFor
fungerar i nästa avsnitt.
-
[task]="task"
— skickar den aktuella uppgiften till barnkomponenten så att den kan visas; -
(onDelete)="deleteTask($event)"
— lyssnar påonDelete
-händelsen från barnkomponenten och anropardeleteTask()
för att ta bort uppgiften; -
(onToggle)="toggleStatus($event)"
— lyssnar påonToggle
-händelsen och anropartoggleStatus()
för att ändra uppgiftens status.
Dekoratorer: @Input() och @Output()
Nu är det dags att koppla samman TaskComponent
med TaskListComponent
, och för detta använder vi dekoratorerna @Input()
och @Output()
.
I Angular är dekoratorerna @Input()
och @Output()
centrala verktyg för kommunikation mellan komponenter. De möjliggör att data skickas in i en komponent och att händelser emitteras ut från en komponent. Här är en snabb översikt:
Här är ett exempel på hur de fungerar i TaskComponent
:
task.ts
task.html
task.css
I vårt fall är task
objektet som skickas från föräldrakomponenten TaskListComponent
till TaskComponent
.
När användaren antingen tar bort en uppgift eller ändrar dess status, skickar TaskComponent
ut händelser som föräldrakomponenten lyssnar på.
@Output()
och EventEmitter
används för att meddela föräldrakomponenten när något händer i barnkomponenten. Dessa dekoratörer tillåter barnkomponenten att kommunicera åtgärder som borttagning av uppgifter eller statusändringar till föräldern.
Metoden deleteTask()
anropas när användaren vill ta bort en uppgift. Den emitterar uppgiftens id
, vilket gör det möjligt för föräldern att ta bort uppgiften från sin lista.
Metoden toggleTask()
växlar uppgiftens slutförandestatus och informerar föräldrakomponenten om denna förändring.
Hur allt fungerar tillsammans
-
TaskListComponent
skickar en uppgift tillTaskComponent
med hjälp av@Input()
; -
Användaren interagerar med uppgiften (till exempel genom att klicka på "Delete");
-
TaskComponent
emitterar en händelse (onDelete
elleronToggle
) med uppgiftensid
; -
TaskListComponent
fångar händelsen och uppdaterar uppgiftslistan; -
Angular uppdaterar automatiskt användargränssnittet baserat på de uppdaterade uppgifterna.
På detta sätt möjliggör @Input()
och @Output()
en tydlig och effektiv kommunikation mellan komponenter, vilket håller strukturen organiserad och reaktiv.
1. Vad gör dekoratören @Input()
i Angular?
2. Vad är syftet med EventEmitter
i Angular?
3. Vad gör dekoratorn TaskComponent
i @Output()
?
Tack för dina kommentarer!