Я получаю доступ к приложению Angular со стратегией URL queryParams ниже
Когда я пытаюсь получить доступ к http://localhost:4200/test?url=http://abc/item%2F2/3, Angular кодирует queryParams, поэтому я использовал CustomUrlSerializer для их декодирования, как показано ниже, но я хотел сохранить тот же queryParam без кодирования или декодирования
Но в настоящее время URL-адрес декодируется и отображается как http://localhost:4200/test?url=http://abc/item/2/3 в URL-адресе браузера.
Но я хочу, чтобы URL-адрес оставался прежним, например http://localhost:4200/test?url=http://abc/item%2F2/3.
Может ли кто-нибудь предоставить мне лучшее решение для этого случая?
import {UrlSerializer, UrlTree, DefaultUrlSerializer} from '@angular/router';
export class MyUrlSerializer implements UrlSerializer {
public ds = new DefaultUrlSerializer();
parse(url: any): UrlTree {
return this.ds.parse(url);
}
serialize(tree: UrlTree): any {
const serializedUrl = this.ds.serialize(tree);
return serializedUrl
.replace(/%40/gi, '@')
.replace(/%3A/gi, ':')
.replace(/%24/gi, '$')
.replace(/%2C/gi, ',')
.replace(/%3B/gi, ';')
.replace(/%20/gi, '+')
.replace(/%3D/gi, '=')
.replace(/%3F/gi, '?')
.replace(/%2F/gi, '/');
}
}
Демонстрация Slick Grid: https://stackblitz.com/edit/angular-router-basic-example-fm1xua