Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Komponentkommunikasjon og Navigasjon | Ruting og Navigasjon i Angular
Introduksjon til Angular

bookKomponentkommunikasjon og Navigasjon

Du vil lære hvordan du setter opp navigasjon i Angular-appen din på riktig måte, samt hvordan du kan sende data mellom komponenter ved å bruke URL-en.

Vi har allerede to ruter konfigurert:

  • / — viser listen over alle oppgaver;

  • /task/:id — viser detaljer for en spesifikk oppgave basert på dens ID.

Målet vårt nå er å sørge for at når brukeren klikker på en knapp inne i et oppgavekort, navigerer appen til en detaljside. TaskDetailsComponent vil deretter hente oppgavens ID fra URL-en og bruke den til å hente oppgavens fulle data.

Note
Merk

Vi sender ikke data direkte mellom komponentene. I stedet benytter vi Angular Router — vi sender oppgave-ID-en gjennom URL-en, og komponenten bruker denne ID-en til å hente oppgaven fra en tjeneste.

Hvordan komponenter samhandler

La oss definere hvordan denne rutesamhandlingen vil fungere.

Vi legger til en knapp inne i TaskComponent. Når den klikkes, vil komponenten sende ut en hendelse til forelderen (TaskListComponent). Forelderen håndterer selve navigasjonen ved å oppdatere URL-en, noe som får Angular til å laste TaskDetailsComponent for den valgte oppgaven.

Hvorfor ikke rute direkte fra TaskComponent?

Hvis vi noen gang ønsker å gjenbruke TaskComponent et annet sted (for eksempel i et modalvindu eller en annen liste), vil vi ikke at den skal være bundet til rute-logikk. I stedet skal den bare varsle forelderen om at en navigasjonshandling er forespurt.

Denne tilnærmingen er enklere å teste og lese, holder rute-logikken sentralisert, og sikrer at TaskComponent forblir ryddig og fokusert på sine ansvarsområder.

Implementering av TaskComponent

Hovedoppgaven til TaskComponent er å sende hendelser til forelderen. Vi legger til en knapp i malen som kaller navigateToTask(), som vil sende ut hendelsen.

task-component.ts

task-component.ts

task-component.html

task-component.html

task-component.css

task-component.css

copy

Når brukeren klikker på info-knappen, sender navigateToTask()-metoden ut oppgave-ID-en. Denne hendelsen fanges opp av forelderen (TaskListComponent), som deretter håndterer navigasjonen ved hjelp av Angulars router.

Implementering av TaskListComponent

Denne komponenten har ansvar for å navigere til detaljsiden for oppgaven.

For å gjøre dette bruker vi Angulars innebygde Router-tjeneste, som lar oss programmere endring av URL og laste inn riktig komponent basert på ruten.

task-list-component.ts

task-list-component.ts

task-list-component.html

task-list-component.html

copy

Vi la til Router-tjenesten i konstruktøren. Angular leverer denne tjenesten automatisk når komponenten opprettes, så ingen ekstra oppsett er nødvendig.

Vi satte også opp en hendelseslytter for (onNavigate), som utløser metoden navigateToTask() .

Når metoden kalles (for eksempel når brukeren klikker på info-knappen), bygger den ruten /task/3, og routeren oppdaterer URL-en og laster inn TaskDetailsComponent.

Hente en oppgave etter ID i TaskDetailsComponent

Når brukeren navigerer til ruten /task/:id, laster Angular inn TaskDetailsComponent. Denne komponenten har ansvar for:

  • Hente ID-en fra URL-en;

  • Finne den tilhørende oppgaven ved hjelp av ID-en;

  • Vise oppgavedetaljene på skjermen.

Slik fungerer det:

task-details-component.ts

task-details-component.ts

task-details-component.html

task-details-component.html

task-details-component.css

task-details-component.css

copy

Forklaring:

ActivatedRoute-tjenesten gir oss tilgang til parameterne for den gjeldende ruten.

  • Vi bruker snapshot.paramMap.get('id') for å hente ut verdien til id fra URL-en;

  • Deretter konverterer vi den til et tall og sender den til getTaskById(id) fra TaskService for å hente oppgaven;

  • Metoden goToHomePage() navigerer tilbake til hovedsiden hvor hele oppgavelisten vises.

Ved å bruke Angular Router har vi dermed satt opp navigasjon mellom komponenter og overført data ved hjelp av en URL-parameter. TaskListComponent håndterer navigasjonen etter oppgave-ID, og TaskDetailsComponent leser ID-en fra ruten og laster inn den tilhørende oppgaven.

question mark

Hva er formålet med navigateToTask-metoden i TaskListComponent?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you show me how to emit the event from TaskComponent?

How do I set up the Router in TaskListComponent?

How does TaskDetailsComponent retrieve the task ID from the URL?

Awesome!

Completion rate improved to 3.13

bookKomponentkommunikasjon og Navigasjon

Sveip for å vise menyen

Du vil lære hvordan du setter opp navigasjon i Angular-appen din på riktig måte, samt hvordan du kan sende data mellom komponenter ved å bruke URL-en.

Vi har allerede to ruter konfigurert:

  • / — viser listen over alle oppgaver;

  • /task/:id — viser detaljer for en spesifikk oppgave basert på dens ID.

Målet vårt nå er å sørge for at når brukeren klikker på en knapp inne i et oppgavekort, navigerer appen til en detaljside. TaskDetailsComponent vil deretter hente oppgavens ID fra URL-en og bruke den til å hente oppgavens fulle data.

Note
Merk

Vi sender ikke data direkte mellom komponentene. I stedet benytter vi Angular Router — vi sender oppgave-ID-en gjennom URL-en, og komponenten bruker denne ID-en til å hente oppgaven fra en tjeneste.

Hvordan komponenter samhandler

La oss definere hvordan denne rutesamhandlingen vil fungere.

Vi legger til en knapp inne i TaskComponent. Når den klikkes, vil komponenten sende ut en hendelse til forelderen (TaskListComponent). Forelderen håndterer selve navigasjonen ved å oppdatere URL-en, noe som får Angular til å laste TaskDetailsComponent for den valgte oppgaven.

Hvorfor ikke rute direkte fra TaskComponent?

Hvis vi noen gang ønsker å gjenbruke TaskComponent et annet sted (for eksempel i et modalvindu eller en annen liste), vil vi ikke at den skal være bundet til rute-logikk. I stedet skal den bare varsle forelderen om at en navigasjonshandling er forespurt.

Denne tilnærmingen er enklere å teste og lese, holder rute-logikken sentralisert, og sikrer at TaskComponent forblir ryddig og fokusert på sine ansvarsområder.

Implementering av TaskComponent

Hovedoppgaven til TaskComponent er å sende hendelser til forelderen. Vi legger til en knapp i malen som kaller navigateToTask(), som vil sende ut hendelsen.

task-component.ts

task-component.ts

task-component.html

task-component.html

task-component.css

task-component.css

copy

Når brukeren klikker på info-knappen, sender navigateToTask()-metoden ut oppgave-ID-en. Denne hendelsen fanges opp av forelderen (TaskListComponent), som deretter håndterer navigasjonen ved hjelp av Angulars router.

Implementering av TaskListComponent

Denne komponenten har ansvar for å navigere til detaljsiden for oppgaven.

For å gjøre dette bruker vi Angulars innebygde Router-tjeneste, som lar oss programmere endring av URL og laste inn riktig komponent basert på ruten.

task-list-component.ts

task-list-component.ts

task-list-component.html

task-list-component.html

copy

Vi la til Router-tjenesten i konstruktøren. Angular leverer denne tjenesten automatisk når komponenten opprettes, så ingen ekstra oppsett er nødvendig.

Vi satte også opp en hendelseslytter for (onNavigate), som utløser metoden navigateToTask() .

Når metoden kalles (for eksempel når brukeren klikker på info-knappen), bygger den ruten /task/3, og routeren oppdaterer URL-en og laster inn TaskDetailsComponent.

Hente en oppgave etter ID i TaskDetailsComponent

Når brukeren navigerer til ruten /task/:id, laster Angular inn TaskDetailsComponent. Denne komponenten har ansvar for:

  • Hente ID-en fra URL-en;

  • Finne den tilhørende oppgaven ved hjelp av ID-en;

  • Vise oppgavedetaljene på skjermen.

Slik fungerer det:

task-details-component.ts

task-details-component.ts

task-details-component.html

task-details-component.html

task-details-component.css

task-details-component.css

copy

Forklaring:

ActivatedRoute-tjenesten gir oss tilgang til parameterne for den gjeldende ruten.

  • Vi bruker snapshot.paramMap.get('id') for å hente ut verdien til id fra URL-en;

  • Deretter konverterer vi den til et tall og sender den til getTaskById(id) fra TaskService for å hente oppgaven;

  • Metoden goToHomePage() navigerer tilbake til hovedsiden hvor hele oppgavelisten vises.

Ved å bruke Angular Router har vi dermed satt opp navigasjon mellom komponenter og overført data ved hjelp av en URL-parameter. TaskListComponent håndterer navigasjonen etter oppgave-ID, og TaskDetailsComponent leser ID-en fra ruten og laster inn den tilhørende oppgaven.

question mark

Hva er formålet med navigateToTask-metoden i TaskListComponent?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 4
some-alt