HashLocationStrategy и параметры запроса в угловых 4

Я перемещаю существующее угловое 4 приложение из PathLocationStrategy в HashLocationStrategy и нужно, чтобы URL-адрес точки входа работал. Это выглядит примерно так www.test.com/?param1=123

Проблема в том, что, как только я переключаю его на HashLocationStrategy, параметры запроса больше не доступны через activRoute.queryParams. (www.test.com/#/?param1=123 работает нормально, но мне нужно сохранить исходную запись URL)

Так есть ли способ получить значение param1 из www.test.com/?param1=123 с HashLocationStrategy? Я действительно не хочу создавать пустую целевую страницу, которая будет перенаправлять на www.test.com/#/?param1=123 если я не могу избежать этого.

1 ответ

Решение

Поскольку HashLocationStrategy уже используется по умолчанию, PathLocationStrategy должен быть дополнительно введен для того, чтобы добраться до реального местоположения браузера:

  providers: [
    PathLocationStrategy,
    {provide: LocationStrategy, useClass: HashLocationStrategy},
    ...
  ]

...

class AppComponent {
  constructor(router: Router, pathLocationStrategy: PathLocationStrategy) {
    const basePath = pathLocationStrategy.getBaseHref();
    const absolutePathWithParams = pathLocationStrategy.path();

    if (basePath !== absolutePathWithParams) {
      router.navigateByUrl(absolutePathWithParams);
    }
  }
}

Если есть базовый URL, его следует дополнительно убрать с пути.

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