Kommunikasjon Mellom Komponenter i Angular
Hvordan er de koblet sammen?
TaskListComponent vil administrere et array av oppgaver, hvor hver oppgave er et objekt med feltene id, title og completed. For å vise hver oppgave, bruker vi TaskComponent.
I tillegg vil TaskComponent kommunisere med sin foreldreskomponent om brukerhandlinger, som når en oppgave skal slettes eller markeres som fullført. Denne interaksjonen skjer gjennom hendelsesutsending.
Implementering av logikken i TaskListComponent
La oss lage en komponent som har ansvar for å administrere oppgavelisten. Inne i denne definerer vi et array av oppgaver og legger til to metoder — deleteTask() og toggleStatus() — for å håndtere oppgavestyring.
task-list.ts
task-list.html
task-list.css
- Listen over oppgaver (
tasks) administreres i komponenten, noe som gjørTaskListComponenttil den sentrale kontrolleren; - Metoden
deleteTask()filtrerer ut oppgaven basert på densid; - Metoden
toggleStatus()finner oppgaven ved hjelp avidog bytter denscompleted-status.
Denne koden bruker direktivet *ngFor for å iterere gjennom tasks-arrayet og opprette en TaskComponent for hver oppgave.
Vi skal se nærmere på hvordan *ngFor fungerer i neste seksjon.
-
[task]="task"— sender den aktuelle oppgaven til barnekomponenten slik at den kan vises; -
(onDelete)="deleteTask($event)"— lytter etteronDelete-hendelsen fra barnet og kallerdeleteTask()for å fjerne oppgaven; -
(onToggle)="toggleStatus($event)"— lytter etteronToggle-hendelsen og kallertoggleStatus()for å endre oppgavens status.
Dekoratører: @Input() og @Output()
Nå er det på tide å koble TaskComponent med TaskListComponent, og til dette bruker vi dekoratørene @Input() og @Output().
I Angular er dekoratørene @Input() og @Output() sentrale verktøy for kommunikasjon mellom komponenter. De gjør det mulig å sende data inn i en komponent og sende hendelser ut av en komponent. Her er en kort oversikt:
Her er et eksempel på hvordan de fungerer i TaskComponent:
task.ts
task.html
task.css
I vårt tilfelle er task objektet som sendes fra forelderen TaskListComponent inn i TaskComponent.
Når brukeren enten sletter en oppgave eller endrer statusen, sender TaskComponent ut hendelser som forelderen lytter etter.
@Output() og EventEmitter brukes for å varsle foreldekomponenten når noe skjer i barnekomponenten. Disse dekoratørene gjør det mulig for barnekomponenten å kommunisere handlinger som sletting av oppgaver eller statusendringer til forelderen.
Metoden deleteTask() kalles når brukeren ønsker å slette en oppgave. Den emitterer oppgavens id, slik at forelderen kan fjerne oppgaven fra listen sin.
Metoden toggleTask() endrer oppgavens fullført-status og informerer foreldekomponenten om denne endringen.
Hvordan alt fungerer sammen
-
TaskListComponentsender en oppgave tilTaskComponentved hjelp av@Input(); -
Brukeren samhandler med oppgaven (for eksempel ved å klikke på "Slett");
-
TaskComponentemitterer en hendelse (onDeleteelleronToggle) med oppgavensid; -
TaskListComponentfanger opp hendelsen og oppdaterer oppgavelisten; -
Angular oppdaterer automatisk brukergrensesnittet basert på de oppdaterte dataene.
På denne måten muliggjør @Input() og @Output() ren og effektiv kommunikasjon mellom komponenter, og holder strukturen organisert og reaktiv.
1. Hva gjør dekoratøren @Input() i Angular?
2. Hva er formålet med EventEmitter i Angular?
3. Hva gjør TaskComponent-deklaratoren i @Output()?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain more about how @Input() and @Output() work in Angular?
What is the purpose of EventEmitter in this context?
How does Angular automatically update the UI when the task list changes?
Fantastisk!
Completion rate forbedret til 3.13
Kommunikasjon Mellom Komponenter i Angular
Sveip for å vise menyen
Hvordan er de koblet sammen?
TaskListComponent vil administrere et array av oppgaver, hvor hver oppgave er et objekt med feltene id, title og completed. For å vise hver oppgave, bruker vi TaskComponent.
I tillegg vil TaskComponent kommunisere med sin foreldreskomponent om brukerhandlinger, som når en oppgave skal slettes eller markeres som fullført. Denne interaksjonen skjer gjennom hendelsesutsending.
Implementering av logikken i TaskListComponent
La oss lage en komponent som har ansvar for å administrere oppgavelisten. Inne i denne definerer vi et array av oppgaver og legger til to metoder — deleteTask() og toggleStatus() — for å håndtere oppgavestyring.
task-list.ts
task-list.html
task-list.css
- Listen over oppgaver (
tasks) administreres i komponenten, noe som gjørTaskListComponenttil den sentrale kontrolleren; - Metoden
deleteTask()filtrerer ut oppgaven basert på densid; - Metoden
toggleStatus()finner oppgaven ved hjelp avidog bytter denscompleted-status.
Denne koden bruker direktivet *ngFor for å iterere gjennom tasks-arrayet og opprette en TaskComponent for hver oppgave.
Vi skal se nærmere på hvordan *ngFor fungerer i neste seksjon.
-
[task]="task"— sender den aktuelle oppgaven til barnekomponenten slik at den kan vises; -
(onDelete)="deleteTask($event)"— lytter etteronDelete-hendelsen fra barnet og kallerdeleteTask()for å fjerne oppgaven; -
(onToggle)="toggleStatus($event)"— lytter etteronToggle-hendelsen og kallertoggleStatus()for å endre oppgavens status.
Dekoratører: @Input() og @Output()
Nå er det på tide å koble TaskComponent med TaskListComponent, og til dette bruker vi dekoratørene @Input() og @Output().
I Angular er dekoratørene @Input() og @Output() sentrale verktøy for kommunikasjon mellom komponenter. De gjør det mulig å sende data inn i en komponent og sende hendelser ut av en komponent. Her er en kort oversikt:
Her er et eksempel på hvordan de fungerer i TaskComponent:
task.ts
task.html
task.css
I vårt tilfelle er task objektet som sendes fra forelderen TaskListComponent inn i TaskComponent.
Når brukeren enten sletter en oppgave eller endrer statusen, sender TaskComponent ut hendelser som forelderen lytter etter.
@Output() og EventEmitter brukes for å varsle foreldekomponenten når noe skjer i barnekomponenten. Disse dekoratørene gjør det mulig for barnekomponenten å kommunisere handlinger som sletting av oppgaver eller statusendringer til forelderen.
Metoden deleteTask() kalles når brukeren ønsker å slette en oppgave. Den emitterer oppgavens id, slik at forelderen kan fjerne oppgaven fra listen sin.
Metoden toggleTask() endrer oppgavens fullført-status og informerer foreldekomponenten om denne endringen.
Hvordan alt fungerer sammen
-
TaskListComponentsender en oppgave tilTaskComponentved hjelp av@Input(); -
Brukeren samhandler med oppgaven (for eksempel ved å klikke på "Slett");
-
TaskComponentemitterer en hendelse (onDeleteelleronToggle) med oppgavensid; -
TaskListComponentfanger opp hendelsen og oppdaterer oppgavelisten; -
Angular oppdaterer automatisk brukergrensesnittet basert på de oppdaterte dataene.
På denne måten muliggjør @Input() og @Output() ren og effektiv kommunikasjon mellom komponenter, og holder strukturen organisert og reaktiv.
1. Hva gjør dekoratøren @Input() i Angular?
2. Hva er formålet med EventEmitter i Angular?
3. Hva gjør TaskComponent-deklaratoren i @Output()?
Takk for tilbakemeldingene dine!