javascript - Angular ukloni query parametar
Kako bih uklonio parametar upita iz URL-a? Na primjer, iz www.expample.com/home?id=123&pos=sd&sd=iii u www.expample.com/home?id=123&sd=iii
UREDI: Ovo je moja verzija:
this.activatedRoute.queryParams.subscribe(c => {
const params = Object.assign({}, c);
delete params.dapp;
this.router.navigate([], { relativeTo: this.activatedRoute, queryParams: params });
}).unsubscribe();
Odgovor #1
Možete ukloniti parametar upita korištenjem opcije merge kod queryParamsHandling i prosljeđivanjem null za sve parametre koje želite ukloniti.
// Remove query params
this.router.navigate([], {
queryParams: {
'yourParamName': null,
'youCanRemoveMultiple': null,
},
queryParamsHandling: 'merge'
})
Ova opcija je jednostavnija i zahtijeva manje posla kako biste osigurali da ne uklanjate druge parametre. Također se ne morate brinuti o čišćenju pretplate na observable kada se vaš komponenta uništi.
Odgovor #2
AZURIRANJE: @epelc-ov odgovor dolje je ažuran i ispravan način da se to učini: https://stackoverflow.com/a/52193044/5932590.
Nažalost, trenutno ne postoji jednoznačan način da se to učini: https://github.com/angular/angular/issues/18011. Međutim, kako je jasonaden komentirao na povezanom razgovoru,
Ovo se može učiniti ručno spajanjem starih i novih parametara upita, uklanjajući ključ koji ne želite.
Evo jednog načina da to učinite:
Recimo da imate svoje queryParams pohranjene u nekim svojstvima.
class MyComponent() {
id: string;
pos: string;
sd: string;
constructor(private route: ActivatedRoute, private router: Router) {}
ngOnInit() {
this.route.url.subscribe(next => {
const paramMap = next.queryParamMap;
this.id = paramMap.get('id');
this.pos = paramMap.get('pos');
this.sd = paramMap.get('sd');
});
}
}
Metoda za čišćenje parametra pos izgledala bi ovako:
clearPosParam() {
this.router.navigate(
['.'],
{ relativeTo: this.route, queryParams: { id: this.id, sd: this.sd } }
);
}
Ovo će učinkovito navigirati na trenutnu rutu i očistiti vaš pos parametar upita, pritom zadržavajući ostale parametre upita iste.
