Je voudrais désactiver l'encodage d'URL.
Quand j'utilise ceci ci-dessous.
this.router.navigate(['/profile', { tags: 'one,two' }]);
L'URL est comme ça
http://localhost:4200/profile;tags=one%2Ctwo
Je voudrais que ce soit comme ci-dessous
http://localhost:4200/profile;tags=one,two
Existe-t-il un moyen de désactiver le codage URL?
Angular2 utilise par défaut encodeURIComponent () pour coder queryParams dans URL, vous pouvez l'éviter en écrivant un sérialiseur d'URL personnalisé et remplacer la fonctionnalité par défaut.
Dans mon cas, je voulais éviter Angular2 pour éviter de remplacer la virgule (,) par (% 2). Je passais Query comme lang = en-us, en-uk où il était converti en lang = en-us% 2en-uk.
Voici comment j'ai travaillé:
CustomUrlSerializer.ts
import {UrlSerializer, UrlTree, DefaultUrlSerializer} from '@angular/router';
export class CustomUrlSerializer implements UrlSerializer {
parse(url: any): UrlTree {
let dus = new DefaultUrlSerializer();
return dus.parse(url);
}
serialize(tree: UrlTree): any {
let dus = new DefaultUrlSerializer(),
path = dus.serialize(tree);
// use your regex to replace as per your requirement.
return path.replace(/%2/g,',');
}
}
Ajoutez la ligne ci-dessous à votre appModule.ts principal
import {UrlSerializer} from '@angular/router';
import {CustomUrlSerializer} from './CustomUrlSerializer';
@NgModule({
providers: [{ provide: UrlSerializer, useClass: CustomUrlSerializer }]
})
Cela ne cassera pas votre fonctionnalité par défaut et ne prendra pas soin de l'URL selon vos besoins.