Не удается получить параметры запроса в стратегии хэширования в Angular

#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. У меня получилось отлично! Спасибо