#javascript #angular #angular-material #angular-routing #hash-location-strategy
#javascript #angular #angular-material #angular-маршрутизация #стратегия хэширования
Вопрос:
Я использую стратегию хэширования в Angular
routing.module.ts
@NgModule({
imports: [
RouterModule.forRoot(routes, { useHash: true })
],
exports: [
RouterModule
]
})
app.module.ts
@NgModule({
providers: [{ provide: LocationStrategy, useClass: HashLocationStrategy }]
})
Я перенаправляю из какого-либо другого приложения в мое приложение angular с этим URL
HTTP://localhost:4200?param_x=xyzamp;param_y=abc
Я хочу получить значения этих параметров в своем приложении, как мне это сделать?
Я попытался использовать активированный снимок маршрута, а также subscribe, оба дают мне пустые значения.
Ответ №1:
Пожалуйста, откройте свою клиентскую часть с параметрами фрагмента.
Параметры фрагмента — это параметры после #, которые также называются параметрами клиента, потому что они не отправляются на сервер.
HTTP://localhost:4200?#hash_param_x=xyzamp;hash_param_y=abc
Затем получите к ним доступ через:
this.activatedRoute.snapshot.queryParams
HashLocationStrategy
берет параметры хэша (фрагмента / клиента) и вставляет их в параметры запроса. Поскольку у вас их нет, вы не видите никаких параметров.
Комментарии:
1. У меня есть оба сценария, я перенаправлен в приложение angular с моими параметрами с сервера, и я хочу их использовать. помимо этого, я использую параметры внутри приложения.
2. Поэтому откройте свою клиентскую часть с параметрами фрагмента, а не с параметрами запроса. Работает ли это для вас? Как только вы откроете его один раз, вам больше не нужно беспокоиться.
3. Я обновил свой ответ, чтобы отразить это. После первоначального перенаправления нет необходимости в дополнительной работе. Вы можете использовать snapshot. Параметры запроса сохраняются полностью.
4. У меня получилось отлично! Спасибо