我构建了一个httpParams接受键值对象的自定义函数,如下所示:
private httpParamsFactory(parameters: { [key: string]: string }): { params: HttpParams } {
const params: HttpParams = new HttpParams();
for (const [key, value] of Object.entries(parameters)) params.append(key, value)
return { params };
}
Run Code Online (Sandbox Code Playgroud)
我正在使用httpParamsFactory如下:
remove = (id: string): Observable<boolean> => this.http.delete<boolean>(`some/url`, this.httpParamsFactory({ id }))
Run Code Online (Sandbox Code Playgroud)
尽管我付出了努力,但我无法在 URL 中包含查询字符串,我尝试调试httpParamsFactory,但结果发现查询字符串没有被附加,如console.log(params.keys())报告的空数组。
因为你正在做:
params.append(key, value)
Run Code Online (Sandbox Code Playgroud)
你应该做
params = params.append(key, value)
Run Code Online (Sandbox Code Playgroud)
这很令人困惑,因为我们习惯了.append直接在对象上工作的命名方法,但这里它只返回一个新对象,而旧对象保持不变。每次我接触这门课时,我也会被这个绊倒。
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |