Angular2 Http.Delete Body为null

时间:2016-08-16 09:07:40

标签: angular rxjs angular2-http

我遵循Angular2 tutorial但是Http.delete总是抛出异常:
TypeError:this._body为null
原始代码为hero.service.ts

public deleteHero(hero: Hero) {

    const headers = new Headers({
        'Content-Type': 'application/json'
    });

    return this._http
        .delete(this._heroesUrl + "/" + hero.Id, { headers: headers })
        .toPromise()
        .catch(this.handleError);
}

2 个答案:

答案 0 :(得分:4)

实际上,虽然接受的答案是有效的解决方法,但正确的解决方案是删除Content-Type标题。 DELETE个请求不应该有body(空或其他),因此它们也不应该有Content-Type标头。 GET请求也是如此。由于有Content-Type标头而没有body(这是一种不合逻辑的组合),会引发错误。

答案 1 :(得分:2)

原来我丢失的一件小事是:

.delete(this._heroesUrl + "/" + hero.Id, { headers: headers, body: "" })
在标题:标题之后

您还可以设置正文。现在,由于它的删除请求通常没有正文。但如果body为null,则会抛出异常......

修改
这是一种解决方法,但实际答案来自@simon