Angular 4/5 HttpClient:字符串类型的参数无法分配给“ body”

菲尔:

Angular文档说:

响应正文不会返回您可能需要的所有数据。有时,服务器返回特殊的标头或状态代码以指示某些条件,因此可能有必要进行检查。为此,您可以告诉HttpClient您想要完整的响应,而不仅仅是带有watch选项的正文:

http
  .get<MyJsonData>('/data.json', {observe: 'response'})
  .subscribe(resp => {
    // Here, resp is of type HttpResponse<MyJsonData>.
    // You can inspect its headers:
    console.log(resp.headers.get('X-Custom-Header'));
    // And access the body directly, which is typed as MyJsonData as requested.
    console.log(resp.body.someField);
  });

但是,当我尝试这样做时,我收到了编译时错误(尽管没有运行时错误,按预期方式工作):

错误TS2345:类型为'{headers的参数:HttpHeaders; 观察:字符串;}'不可分配给类型'{headers ?: HttpHeaders | {[header:string]:字符串| 串[]; }; 观察?:“身体”;参数?:Ht ...'。属性“观察”的类型不兼容。类型“字符串”不可分配给类型““ body””。

为什么?我用"@angular/http": "^5.1.0"

这是我的代码版本:

  login(credentials: Credentials): Observable<any> {
    const options = {
      headers: new HttpHeaders({'Content-Type': 'application/json'}),
      observe: 'response'
    };
    return this.httpClient.post<any>(`${environment.USER_SERVICE_BASE_URL}`,
      {'username': credentials.username, 'password': credentials.password}, options)
      .map((res) => ...
伊戈尔:

您必须内联选项。参见github票证#18586alxhub于2017年8月9日进入

为了为get()选择正确的返回类型,Typescript需要能够静态地推断观察值和responseType值。如果传入类型错误的选项对象,则无法推断正确的返回类型。

login(credentials: Credentials): Observable<any> {
    return this.httpClient.post<any>(`${environment.USER_SERVICE_BASE_URL}`,
      {'username': credentials.username, 'password': credentials.password}, {
      headers: new HttpHeaders({'Content-Type': 'application/json'}),
      observe: 'response'
    })
      .map((res) => ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular 2引导函数给出错误“参数类型AppComponent无法分配给参数类型Type”

无法将MemoizedSelector分配给“字符串”类型的参数

Angular 6-参数类型订阅不能分配给参数类型Array <any>

Angular HttpClient发布无法发送简单的字符串参数

无法分配给类型错误的Angular BehaviourSubject问题

无法将HTML分配给HTMLDocument.body

输入'{键:字符串;}”不可分配给“产品”类型Angular 7

无法将字符串类型的参数分配给paramMap

无法将类型“未知”的参数分配给类型“字符串”的参数

类型“ {}”的参数不能分配给Angular 8中的类型的参数

类型'string |的参数 字符串[] | 解析的Q | ParsedQs []'无法分配给'string'类型的参数

Angular4:编译失败:参数类型{路径:字符串,组件 HomeComponent}[] 不能分配给参数类型路由

Angular 中的新 HttpClient / HttpGetModule “类型‘对象’不可分配给类型”

Angular 5 错误 TS2345:“数字”类型的参数不可分配给“字符串”类型的参数

“数字”类型的参数不能分配给 angular2 中“字符串”类型的参数。

错误:无法将参数类型 int 分配给参数类型字符串

Angular 中的错误 TS2322 错误“类型‘字符串’在使用 ng-particles 时不能分配给类型‘‘画布’”

输入'字符串| undefined' 不可分配给 Angular 12 模板中的类型 'string'

参数类型字符串?不能分配给参数类型“字符串”

“数字”类型的参数不能分配给“字符串”类型的参数 - Typescript 和 Angular

错误:无法将参数类型“字符串函数(字符串)”分配给参数类型“字符串?函数(字符串?)?'

Dart、flutter - 无法将参数类型“字符串”分配给参数类型“颜色?”

为什么Angular 说loggedInUser!: string; 不能分配给类型字符串?

无法将参数类型“字符串”分配给参数类型“字符串”

无法将参数类型“字符串”分配给参数类型“对象?函数(对象?,对象?)?

Angular - 错误 TS2322:输入 '{ id: number; 名称:字符串;}' 不可分配给类型 'NgIterable<any> | 空| 不明确的'

无法将参数类型“字符串”分配给参数类型“目录”

消息错误:参数类型“字符串?” 不能分配给参数类型“字符串”

Angular Tour of Heroes,HTTP 请求:“英雄”类型的参数不可分配给“字符串”类型的参数