加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular> = 4.3,httpClient.get params为空

发布时间:2020-12-17 17:05:07 所属栏目:安全 来源:网络整理
导读:我正在尝试将我的Http请求迁移到HttpClient请求. 我能够迁移我的帖子查询但我在迁移获取查询时遇到问题.当我这样做时,我的后端没有分别收到任何参数,它告诉我没有提供参数并且为空. 我做错什么了吗? import {HttpClient,HttpHeaders,HttpParams} from '@ang
我正在尝试将我的Http请求迁移到HttpClient请求.
我能够迁移我的帖子查询但我在迁移获取查询时遇到问题.当我这样做时,我的后端没有分别收到任何参数,它告诉我没有提供参数并且为空.

我做错什么了吗?

import {HttpClient,HttpHeaders,HttpParams} from '@angular/common/http';

constructor(private httpClient: HttpClient) {}

findItems() {
   let params: HttpParams = new HttpParams();
   params.set('something','hello');

   this.httpClient.get<any[]>('http://localhost:3000/apath/',{params})
    .subscribe((results: any[]) => {
      console.log(results);
    },(errorResponse: any) => {
       console.error(errorResponse);
    });
}

任何的想法?

解决方法

目前HttpParams是不可变的,你应该设置params如下:

// for set method
let params: HttpParams = new HttpParams().set('something','hello');
// for append method
let params: HttpParams = new HttpParams().append('something','hello');

HttpParams的set和append方法将用set和append覆盖原来的params实例和最新更新的实例,最后返回新实例.

所以我们可以在多行中完成,如下所示:

let params: HttpParams = new HttpParams();
params = params.set('something','hello');          
params = params.append('something2','hello2');

Plunker demo

重要:

从Angular v5.0.0开始,您可以使用HttpParamOptions中的fromObject同时添加多个参数.

const param = new HttpParams({fromObject: {aaa: '1',bbb: '222'}});

您也可以直接将对象参数设置为HttpClient方法

const obj = {aaa: '1',bbb: '222'};
this.http.get('test',{ params: obj}).subscribe();

请参阅demo,第二种方式,请检查浏览器的网络以确认参数已成功添加.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读