Angular 7 меняет скобки для% 28 и% 29 в URL - PullRequest
0 голосов
/ 11 января 2019

У меня проблема с угловыми маршрутами. В моем приложении у меня есть время окончания сеанса входа в систему. Поэтому, когда пользователь не активен в течение 15 минут - приложение попросит его снова войти в систему.

В настоящее время я сохраняю текущий активный URL в магазине и хочу перенаправить пользователя на него после входа в систему. Я делаю это в эффектах с this.router.navigate([backUrl]).

Проблема в том, что некоторые маршруты с круглыми скобками, например, это http://localhost:4200/somedata/details/3043/edit/(modal:activity/6b9f7a3e-93c9-418f-a172-c2fa648d1be7), преобразуется в http://localhost:4200/somedata/details/3043/edit/%28modal:activity/6b9f7a3e-93c9-418f-a172-c2fa648d1be7%29 и на этой странице не распознается маршрутами.

Я пытался использовать CustomUrlSerializer для решения этой проблемы:

export class CustomUrlSerializer implements UrlSerializer {
  private defaultUrlSerializer: DefaultUrlSerializer = new DefaultUrlSerializer();

  parse(url: string): UrlTree {
    // Encode parentheses
    url = url.replace(/\(/g, '%28').replace(/\)/g, '%29');
    // Use the default serializer.
    return this.defaultUrlSerializer.parse(url);
  }

  serialize(tree: UrlTree): string {
    return this.defaultUrlSerializer.serialize(tree).replace(/%28/g, '(').replace(/%29/g, ')');
  }
}

И добавлено в App.module провайдеров { provide: RouterStateSerializer, useClass: CustomRouterStateSerializer }, Но тогда я всегда перенаправлен на страницу NotFound для URL с круглыми скобками, если я пытаюсь открыть их в новом окне браузера или просто обновить страницу. Но это все еще работает для относительных маршрутов. Как из этого URL http://localhost:4200/somedata/details/3043/edit я могу открыть свой компонент по пути (modal:activity/6b9f7a3e-93c9-418f-a172-c2fa648d1be7)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...