Angular 8 Получить параметры URL (HttpParams), закодированные с помощью% для специальных символов - PullRequest
0 голосов
/ 13 июля 2020

Я ищу отмену декодирования HttpParams по умолчанию из angular:

В URL:? Categories = first% 2Bsecond

, а затем, когда я получаю HttpParams и вызываю API с категориями:? Categories = first + second

Но я не хочу, чтобы% 2B был закодирован таким образом, мне нужно вызвать API с% 2B

Есть много вопросов, касающихся эта проблема, но все параметры установлены вручную, а не я, я получаю параметры и вызываю API после

Я нашел encodeURIComponent, но я действительно не знаю, как получить параметры и перекодировать их

я пробую это:

    if (params) {
  params.keys().forEach((key: string) => {
    if(key == 'categories'){
      console.log("i'm here");
      
    }
    request[key] = params.get(key);
  });
}

Но в условии, что я не знаю, как перекодировать параметры

Ty :)

1 Ответ

0 голосов
/ 13 июля 2020

Это действительно работает:

        console.log(params);
    const categories = [];
    let newParams = new HttpParams();
    let test = new HttpParams();

    if (params) {
      params.keys().forEach((key: string) => {

        if(key == "categories") {

          for (let index = 0; index < params.get(key).length; index++) {
            categories.push(encodeURIComponent(params.get(key)[index]));
          }

          newParams = params.delete(key);

          categories.forEach(categorie => {
            newParams = newParams.append(key, categorie);
          });
          console.log(newParams);
        }
      });
    }

Но когда я использовал такие новые newParams:

    const url = `${BASE_URL}/${`api/${id}/random`}`;
return this.http.get<Page<Element>>(url, {params});

'+', который был правильно закодирован в% 2B, прежде чем стал% 252 в вызове api

...