#angular #parameters #router
Вопрос:
учитывая URL-адрес, например http://www.example.com?a=?amp;b=2 Угловой отсекает URL-адрес на втором вопросительном знаке, хотя в соответствии с определением RFC там разрешен вопросительный знак.
К сожалению, у меня нет возможности закодировать URL-адрес вопросительным знаком или изменить URL-адрес каким-либо другим способом.
Ребята, вы знаете, как изменить это поведение и сохранить весь URL-адрес?
Любая помощь будет высоко оценена.
С наилучшими пожеланиями, Пол
Ответ №1:
Если вы посмотрите на Router
конструктор в документах, он вводит UrlSerializer
, который позже используется для сериализации / десериализации маршрутов. По умолчанию Angular вводит значение DefaultUrlSerializer
, которое кодирует параметры запроса.
Но вы можете внедрить свою собственную реализацию, указав ее в поставщиках вашего модуля:
providers: [{ provide: UrlSerializer, useClass: YourCustomUrlSerializer }],
Конечно, вам придется предоставить эту пользовательскую реализацию самостоятельно. Интерфейс довольно прост, поэтому он будет выглядеть примерно так:
export class YourCustomUrlSerializer implements UrlSerializer {
parse(url: any): UrlTree {
// Your implementation here
}
serialize(tree: UrlTree): any {
// Your implementation here
}
}
К сожалению, логика довольно сложная, поэтому это не так просто, как написать несколько строк кода. Вы можете проверить реализацию по умолчанию здесь и опираться на нее.
Комментарии:
1. Это сработало, миллион благодарностей! Привет из Берлина