【问题标题】:Angular httpclient.get does returns undefinedAngular httpclient.get 确实返回未定义
【发布时间】:2019-05-11 03:58:01
【问题描述】:

我有以下代码将“未定义”打印到控制台

    let f:Observable<Asset[]>;
         f= this.http.get<HttpResponse<Asset[]>>(this.baseApiUrl+"Asset",this.httpNormalOptions).pipe(map(
           response=>{
            return response.body;
           }
         ))

         f.subscribe(m=>{console.log(m)});
         return f;

但是我之前的代码运行良好

return this.http.get<Asset[]>(this.baseApiUrl+"Asset",this.httpNormalOptions).pipe(map(
       response=>{
        return response;
       }
     ))

两者的标题完全相同,如下所示

this.httpNormalOptions = {
        headers: new HttpHeaders({
          'Content-Type': 'application/json',
          'Authorization': 'Bearer ' + this.auth_token,
          observe:'response'
        })
      }

为什么其中一个返回“未定义”,而另一个返回填充数组?我已经检查了 web 服务端,并且在这两种情况下都返回了一个填充的数组。

【问题讨论】:

  • 响应是一个资产数组。不是 HttpClientResponse
  • 是的,但在第一个示例中,我返回了作为 Asset[] 的 response.body 对象,但 response.body 未定义...
  • 你不需要使用body属性。
  • 啊。那么如何将其转换为 Observable

标签: angular7


【解决方案1】:

let f:Observable<Asset[]>;
         f= this.http.get<Asset[]>(this.baseApiUrl+"Asset",this.httpNormalOptions).pipe(map(
           response:= Asset[]>{
            return response;
           }
         ))

         f.subscribe(m=>{console.log(m)});
         return f; 

【讨论】:

  • 我假设你的意思是,返回 this.http.get>(this.baseApiUrl+"Asset",this.httpNormalOptions).pipe(map( response=>{ return response ; } )) 但是它不起作用。我收到一条错误消息“找不到名称响应”
  • 抱歉,Iphone App 不是编辑代码的最佳位置
  • 哈哈,没关系。我明白你在说什么。但是正如我所说,它不起作用,因为我收到错误。
猜你喜欢
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 2017-01-08
  • 2018-07-21
  • 2019-07-28
  • 2017-10-31
  • 1970-01-01
相关资源
最近更新 更多