Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Komponentkommunikasjon og navigasjon | Routing and Navigation in Angular
Introduksjon til Angular

bookKomponentkommunikasjon og navigasjon

Du vil lære hvordan du setter opp navigasjon riktig i Angular-appen din, og hvordan du overfører 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 fullstendige data om oppgaven.

Note
Merk

Vi overfører ikke data direkte mellom komponenter. 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 rutingsinteraksjonen 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 rutingslogikk. I stedet bør den bare varsle forelderen om at en navigasjonshandling er forespurt.

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

Implementering av TaskComponent

Hovedoppgaven til TaskComponent er å sende ut 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, emitterer navigateToTask()-metoden 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 er ansvarlig for å navigere til detaljsiden for oppgaven.

For å gjøre dette bruker vi Angulars innebygde Router-tjeneste, som lar oss programmere endre URL-en 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 lar oss få tilgang til parameterne for den gjeldende ruten.

  • Vi bruker snapshot.paramMap.get('id') for å hente ut id-verdien 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 altså 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

Awesome!

Completion rate improved to 3.13

bookKomponentkommunikasjon og navigasjon

Sveip for å vise menyen

Du vil lære hvordan du setter opp navigasjon riktig i Angular-appen din, og hvordan du overfører 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 fullstendige data om oppgaven.

Note
Merk

Vi overfører ikke data direkte mellom komponenter. 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 rutingsinteraksjonen 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 rutingslogikk. I stedet bør den bare varsle forelderen om at en navigasjonshandling er forespurt.

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

Implementering av TaskComponent

Hovedoppgaven til TaskComponent er å sende ut 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, emitterer navigateToTask()-metoden 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 er ansvarlig for å navigere til detaljsiden for oppgaven.

For å gjøre dette bruker vi Angulars innebygde Router-tjeneste, som lar oss programmere endre URL-en 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 lar oss få tilgang til parameterne for den gjeldende ruten.

  • Vi bruker snapshot.paramMap.get('id') for å hente ut id-verdien 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 altså 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