【问题标题】:Appending to HttpParams adds to map property in one method, but not the other附加到 HttpParams 以一种方法添加到 map 属性,而不是另一种
【发布时间】:2019-07-25 00:05:01
【问题描述】:

我通过附加一些可选的 HttpParam 来发出请求。在我的服务内部的一种方法中,这会将参数添加到 map 属性。在同一服务内的相邻方法中,附加map 后仍然为空。

我创建 HttpParams,然后附加我需要的内容。

整个工作方式是这样的。

    const user = this.sessionHelperService.checkUser();
    const headers = this.sessionHelperService.getAuthHeader();
    const apiUrl = `${this.LAB_URL_CHUNK}/${user.lab}/${this.LOG_BOOK_INSTRUMENTS_URL_CHUNK}/`;
    let params = new HttpParams();
    pageIndex++;
    params = params.append('page', pageIndex.toString());
    params = params.append('page_size', pageSize.toString());
    params = params.append('paginate', 'true');
    if (locationId) {
      params = params.append('location_id', locationId.toString());
    }

    return this.http.get<LogBookInstruments[]>(apiUrl, { headers, params })
      .pipe(
        catchError((res: HttpResponse<any>) => observableThrowError(res.status)));

未正确形成参数的方法如下所示。它们非常相似,所以我不知道为什么参数的形成方式不同。

    const user = this.sessionHelperService.checkUser();
    const headers = this.sessionHelperService.getAuthHeader();

    sortColumn = sortDirection === '' ? '' : sortDirection === 'asc' ? sortColumn : '-' + sortColumn;
    const apiUrl = `${this.LAB_URL_CHUNK}/${user.lab}/${this.LOG_BOOK_ENTRIES_URL_CHUNK}/?sort=${sortColumn}`;
    let params = new HttpParams();
    pageIndex++;
    params = params.append('page', pageIndex.toString());
    params = params.append('page_size', pageSize.toString());
    params = params.append('paginate', 'true');

    return this.http.get<LogEntry[]>(apiUrl, { headers })
      .pipe(
        catchError((res: HttpResponse<any>) => observableThrowError(res.status)));

当我在工作方法中记录参数时,它会在map 数组中显示附加参数,而cloneFrom 属性是不同的。

cloneFrom: null
encoder: HttpUrlEncodingCodec {}
map: Map(3)
size: (...)
__proto__: Map
[[Entries]]: Array(3)
0: {"page" => Array(1)}
1: {"page_size" => Array(1)}
2: {"paginate" => Array(1)}
length: 3
updates: (3) [{…}, {…}, {…}]
__proto__: Object

当我在新的无效方法中记录参数时,map 数组为空。

cloneFrom: HttpParams {updates: null, cloneFrom: null, encoder: HttpUrlEncodingCodec, map: null}
encoder: HttpUrlEncodingCodec {}
map: null
updates: (3) [{…}, {…}, {…}]
__proto__: Object

为什么类似的方法要创建不同的参数?

【问题讨论】:

    标签: angular typescript http parameters


    【解决方案1】:

    您没有在 get 调用中使用参数,这就是原因:

    这是

    return this.http.get<LogEntry[]>(apiUrl, { headers })
    

    而不是:

    return this.http.get<LogEntry[]>(apiUrl, { headers, params })
    

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 2017-10-30
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多