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'];
