typescript - ¿Por qué hacen un bucle sobre los parámetros de ruta en este tutorial de Angular?
Estaba revisando el tutorial de Angular 2 sobre enrutamiento. En algún momento agregan una ruta /detail/:id y añaden un método ngOnInit() para manejar esta ruta y, en particular, para obtener el parámetro :id:
ngOnInit(): void {
this.route.params.forEach((params: Params) => {
let id = +params['id'];
this.heroService.getHero(id)
.then(hero => this.hero = hero);
});
}
La parte que no entiendo es por qué están haciendo un bucle sobre los parámetros de la ruta. Dado que solo puede haber un ID, ¿no es posible obtenerlo usando this.route.params['id']?
Además, si realmente hubiera varios IDs, ¿cuál sería el sentido de recorrerlos si cada nuevo héroe solo reemplazaría al anterior?
Respuesta #1
Cuando la ruta se cambia de una manera que solo cambian los parámetros (por ejemplo id en /somepath/:id/otherPath), el enrutador no navega fuera y vuelve al mismo componente, sino que mantiene el mismo componente y emite un evento de cambio de parámetro.
Para cada evento (params:Params) => { ... } se ejecuta.
Respuesta #2
Para recuperar un solo Id, también puedes usar esto,
let id = +this.route.snapshot.params['id'];
