Chvalov
@Chvalov

Как из FormArray полей составить GET запрос?

Код проекта: https://stackblitz.com/edit/rest-request-test-2
Есть FormArray:
requestForm = this.fb.group({
    method: [null],
    baseUrl: [null],
    urlParams: new FormArray([
      new FormGroup({
        name: new FormControl(null),
        value: new FormControl(null),
        mark: new FormControl(null)
      })
    ]),
    headerParams: new FormArray([
      new FormGroup({
        name: new FormControl(null),
        value: new FormControl(null)
      })
    ]),
  });

В urlParams находятся параметры GET запроса и метки по параметрах
собственно не знаю как выдернуть од-туда только name и value и передать в HttpParams или
URLSearchParams чтобы получить строку в виде site.com/test?name=value&name2=value22&login=admin
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 1
Может смогу помочь:
onSubmit() {
    let urlParamsFromFB = [];
    this.requestForm.value.urlParams.forEach(param => { // проходимся циклом по значениях формы
      if (param.name && param.value) { // проверяем, что значения не квазиложные
        urlParamsFromFB.push( {name: param.name, value: param.value} ); // выбираем только name и value
      }
    })

    let urlParamsForHTTP = new HttpParams(); // создаем объект для query-параметров
    urlParamsFromFB.forEach(param => {
      urlParamsForHTTP = urlParamsForHTTP.set(param.name, param.value) // сэтаем сохранённые значения из формы 
    })                                                                 // в объект query-параметров.
                                                                       // Сам объект query-параметров должен перезаписываться по значению

    this.http.get('https://jsonplaceholder.typicode.com/users', {params: urlParamsForHTTP})  // делаем get-запрос, передав вторым аргументом
      .subscribe(data => console.log(data));                                                 // объект с полем params, равным объекту query-параметров.
    
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы