С Angular Router, есть ли способ переназначить старые параметры запроса маршрута на новые?

Я конвертирую приложение Angular 1.5 в Angular 4, это приложение имеет давнюю историю, поэтому существует несколько URL-адресов, которые были перенаправлены. Одна из этих страниц - наша страница поиска, где параметры запроса определяют, что искать.

С помощью ui-router в AngularJS у нас было перенаправление маршрута, которое выглядело так (упрощенно для примера):

$urlRouterProvider.when('/search?text_query', ['$match', ($match) => {
  const params = [];
  if ($match.text_query) {
    params.push('text=' + $match.text_query);
  }

  return '/curriculumLibrary?' + params.join('&');
}]);

Наша проблема в том, что встроенный маршрутизатор для современного Angular просто передает параметры запроса; это не волнует, как они выглядят. Мое решение до сих пор состоит в том, чтобы повторно нанести на карту и перенаправить после того, как маршрут был закончен. Вот как это выглядит в компоненте верхнего уровня:

public ngOnInit() {
  this.route.queryParamMap.subscribe((params) => {
    if (typeof params.text_query !== 'undefined') {
      this.router.navigate(['.'], { 
        queryParams: { text: params.text_query },
        relativeTo: this.route
      })
    }
  });
}

Мы должны перенаправить маршрут, потому что нам нужно изменить URL-адрес, чтобы отразить правильную структуру URL (мы хотим, чтобы эти маршруты перестали использоваться).

Есть ли способ выполнить такой тип переопределения запросов в Resolver, Guard или где-либо еще на уровне кода разрешения URL-адресов? С другой стороны, по мнению Angular, параметры запроса должны пониматься только теми компонентами, где они используются?

0 ответов

Другие вопросы по тегам