Http Params не добавляется в запрос на получение - PullRequest
2 голосов
/ 14 апреля 2020

app.module.ts

getHttpParams = () => {
    const httpParams = new HttpParams();
    console.log(this.userForm.controls)
    Object.keys(this.userForm.controls).forEach(key => {
        console.log(this.userForm.get(key).value)
        const value = this.userForm.get(key).value;
        if (value){
            console.log('keyvalue' + httpParams.append(key, value)) ==> It Showing corrrect value
            httpParams.append(key, value);      ==> HttpParams map return null
            console.log(httpParams)
        }
    });
    return httpParams;
}

onSubmit() {
    this.router.queryParams.subscribe(params => {
        let opts = { params: this.getHttpParams() }
        console.log(opts)

        this.http.get<User>(`${this.serverUrl}`, opts).subscribe(
            res => {
                this.user = res
                console.log(res)
            }
        ),
        console.log(params);
    })
}

Когда вызывается функция getHttpParams, она получает правильное значение, но httpParams.append возвращает значение null в карте httpParams. Кто-нибудь может мне помочь ??

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Вы можете просто создать объект HttpParams из другого объекта, см. Ниже:

getHttpParams = () => new HttpParams({ fromObject: this.userForm.value });

Просто и элегантно!

0 голосов
/ 14 апреля 2020

Метод добавления HttpParams вернет новое тело с добавленным значением.

getHttpParams = () => {
let httpParams = new HttpParams();
Object.keys(this.userForm.controls).forEach(key => {
  const value = this.userForm.get(key).value;
  if (value){
    httpParams = httpParams.append(key, value); // ?
    console.log(httpParams)
  }

});
return httpParams;
}

прочитайте эту статью Создание URL с HttpParams в Angular для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...