Mam nadzieję, że pomoże to komuś innemu.
Pytanie powyżej stwierdza, że wartość parametru zapytania jest potrzebna po przekierowaniu strony i możemy założyć, że wartość migawki (nieobserwowalna alternatywa) byłaby wystarczająca.
Nikt tutaj nie wspomniał o snapshot.paramMap.get z oficjalnej dokumentacji .
this.route.snapshot.paramMap.get('id')
Więc przed wysłaniem dodaj to w komponencie wysyłającym / przekierowującym:
import { Router } from '@angular/router';
następnie przekieruj jako jedno z nich ( tutaj udokumentowane ):
this.router.navigate(['/heroes', { id: heroId, foo: 'foo' }]);
lub po prostu:
this.router.navigate(['/heroes', heroId ]);
Upewnij się, że dodałeś to do swojego modułu routingu, jak tu udokumentowano :
{ path: 'hero/:id', component: HeroDetailComponent }
I wreszcie w komponencie, który musi użyć parametru zapytania
dodaj import (udokumentowany tutaj ):
import { Router, ActivatedRoute, ParamMap } from '@angular/router';
wstrzyknąć ActivatedRoute
(dokumentacja importuje również SwitchMap, a także wstrzykuje Routera i HeroService - ale są one potrzebne tylko dla obserwowalnej alternatywy - NIE są one potrzebne, gdy używasz alternatywnej migawki, jak w naszym przypadku):
constructor(
private route: ActivatedRoute
) {}
UWAGA: JEŚLI DODIESZ MODUŁ ROUTINGU DO MODUŁU FUNKCJI (JAK WYKAZANO W DOKUMENTACJI) UPEWNIJ SIĘ, ŻE W APP.MODULE.ts, ŻE MODUŁ ROUTINGU PRZYJMUJE PRZED modułem AppRoutingModule (lub innym plikiem z trasami aplikacji na poziomie administratora) W PRZYPADKU: []. INNE TRASY FUNKCJI NIE ZOSTANĄ ZNALEZIONE (TAK, JAKIE POWINNY BYĆ PO {path: '**', przekieruj do: '/ not-found'}, a zobaczysz tylko wiadomość nie znalezioną).
@RouteConfig
topath
?