typescript - Varför loopar de över ruttparametrar i denna Angular-handledning?


Jag tittade igenom Angular 2-handledningen om routing. Vid någon tidpunkt lägger de till en rutt /detail/:id och lägger till en ngOnInit()-metod för att hantera denna rutt och, i synnerhet, för att få :id-parametern:

ngOnInit(): void {
  this.route.params.forEach((params: Params) => {
    let id = +params['id'];
    this.heroService.getHero(id)
      .then(hero => this.hero = hero);
  });
}

Den delen jag inte förstår är varför de loopar över ruttparametrar? Eftersom det bara kan finnas ett ID, är det inte möjligt att få det med this.route.params['id']?

Också, om det verkligen fanns flera id:n, vad skulle poängen vara med att loopa igenom dem eftersom varje ny hjälte bara skulle ersätta den föregående?

Svar #1

När rutten ändras på ett sätt som endast ändrar parametrar (till exempel id i /somepath/:id/otherPath) navigerar routern inte bort från och tillbaka till samma komponent utan behåller istället samma komponent och sänder en parameterändringshändelse.

För varje händelse körs (params:Params) => { ... }.

Svar #2

För att hämta en ensam Id kan du också använda detta,

let id = +this.route.snapshot.params['id'];

Relaterade artiklar