Я просто не могу найти решение для такой проблемы. Я разрабатываю поисковую систему, и я хотел бы отображать в URL-адресе то, что пользователь пытается найти, например:
https://my-site.com/search;query=%28rockstar;search=true;page=0
Пользователь пытается найти (rockstar
фразу.
Когда я вставляю этот URL-адрес в браузер, он работает, как и ожидалось, но браузер Chrome отображает этот URL-адрес следующим образом:
https://my-site.com/search;query=(rockstar;search=true;page=0
Таким образом, %28
меняется на (
. Я не знаю, зависит ли это поведение от Angular или от браузера. Когда у меня есть URL-адрес с (
, обновление F5
не работает, потому что Angular Router сообщает о такой проблеме:
Cannot match any routes. URL Segment: 'rockstar;search=true;page=0'
Копирование ссылки из адресной строки URL-адреса также бесполезно, потому что скопированная ссылка содержит символ (
(не %28
). Как предотвратить декодирование %28
и других специальных символов браузером в адресной строке URL? Проблема возникает в Angular v5.2.5
Вот демонстрация этой проблемы: https://angular-url-problem.stackblitz.io
Обратите внимание, что в Angular 6 этой проблемы не существует: https://angular-url-problem-v6.stackblitz.io
Help others reproduce the problem
. Пожалуйста, предоставьте минимальный воспроизводимый пример, чтобы мы могли протестировать его без необходимости реализовывать его самостоятельно (и я настаиваю наVerifiable
, что означает, что вы должны воспроизвести проблему, а не просто предоставить stackblitz) - person   schedule 30.08.2018?
. - person Marcin Kapusta   schedule 30.08.2018encodeURIComponent('(')
все равно возвращает(
- person user184994   schedule 30.08.2018