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, его следует дополнительно убрать с пути.