如何添加一个体到Angular HttpClient删除函数

时间:2017-09-05 07:18:40

标签: angular angular-httpclient

我们的项目正在迁移到 Angular4 ,并使用@angular/common/http Httpclient作为默认网络工具。但我发现删除功能中没有body参数。如何添加正文以删除功能?谢谢。

4 个答案:

答案 0 :(得分:48)

您可以在HttpClient类上使用通用request方法。此方法具有选项中的主体。 https://angular.io/api/common/http/HttpClient#members

例如 this.http.request('delete', 'url', { body: ... })

答案 1 :(得分:11)

const httpOptions = {
    headers: new HttpHeaders({ 'Content-Type': 'application/json' }), body: your body data
};


return new Promise(resolve => {
    this.httpClient.delete(URL, httpOptions)       
                   .subscribe(res => {     
                       resolve(res);
                   }, err => {               
                       resolve(err);
                   });
    });

通过使用httpOptions,您可以在其中设置标题和正文。 请参阅此https://angular.io/tutorial/toh-pt6#delete-a-hero

答案 2 :(得分:1)

我也遇到了这个问题,我的解决方案是创建一个新的HttpRequest删除方法,然后克隆此请求,使用您的数据重置其正文。



let req = new HttpRequest('DELETE', 'url');
let newReq = req.clone({body: [10]});
this.http.request(newReq).subscribe((res) => {
    console.log(res);
}, (err) => {
    console.log(err);
});




clone()是必需的,因为仍然无法在new HttpRequest()中直接设置正文。

答案 3 :(得分:0)

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


constructor(private http: HttpClient) { }    


deleteItem(item: any): Observable<any> {
    let params = new HttpParams();
    params = params.append('itemId', item.itemId);
    return this.http.delete<any>(`url`, { params });
}