использование специального символа в router.navigate вызывает бесконечный цикл - PullRequest
1 голос
/ 19 февраля 2020

Gmail позволяет добавлять дополнительные материалы в конце письма на тот же адрес, даже если электронная почта уже используется. Вот так:

random. email+23287@gmail.com

Мы иногда используем это для тестирования. К сожалению, сейчас, когда я использую этот вид электронной почты для навигации, я получаю бесконечное значение l oop от того, что я считаю встроенным кодировщиком URI для router.navigate(), вызванного символом +

Я проверил другие специальные символы и пришел к выводу, что это может быть случай с этим примером:

gotoconfirmationpage() {
    this.router.navigate(['/confirmation', '%@gmail.com']);
  }

и маршрутизатор выглядит так:

  {
    path: 'confirmation/:email',
    component: ConfirmationComponent
  },

Я также пробовал предварительное кодирование до навигации, но тоже самое. Похоже, что для любого закодированного символа, который является %, а также для других, таких как #, & и т. Д., После навигации вы получите что-то вроде этого:

enter image description here

и ваша история выглядит примерно так ...

enter image description here

Я не эксперт, но Я почти уверен, что результат кодирования для символа % равен %25, и похоже, что он закодирован, а затем навигация снова видит его и говорит: «О, посмотрите еще один!» и затем мы получаем %25252525252525252525... до бесконечности.

Я проверил страницу разработки для navigation(), и похоже, что это может быть существующая проблема, но я еще не нашел решения. Если у кого-то есть какая-либо информация или решение, это будет с благодарностью.

Ответы [ 2 ]

3 голосов
/ 19 февраля 2020

Можете ли вы попробовать кодировать компонент URI, используя следующий метод.

 gotoconfirmationpage() {
    this.router.navigate(['/confirmation', encodeURIComponent('%@gmail.com')]);
  }

В компоненте вам может понадобиться также decodeURIcomponent, чтобы получить фактическое значение.

1 голос
/ 24 февраля 2020

Извините, что говорю всем, что если у вас есть эта ошибка, вы не найдете здесь ответа, хотя вы можете найти ответ @ Rahul Tokase , который будет полезен, поэтому проверьте его.

Проблема оказалась неожиданно бесконечной l oop с нашей внутренней службой навигации, входящей в приложение маршрутизатора. Он кодировал URI, а затем делал это снова и снова, так что у вас было бы %, и это стало бы %25, и это стало бы %2525 и так далее. Удачи там.

...