繁体   English   中英

Angular2:res.json 不是函数

[英]Angular2: res.json is not a function

我正在尝试在我的代码中使用以下服务:

import {Injectable} from '@angular/core';
import {Http,Response} from "@angular/http";
import 'rxjs/Rx';

@Injectable()
export class HttpService{
    constructor(private http : Http){}

    getData(){
      return  this.http.get("URI")
      .map( (res: Response) => res.json()  );
    }
}

问题是,在运行时它抱怨:

res.json is not a function

我已经将 res 的数据类型定义为响应,但仍然抱怨

.map( (res: Response) => res.json()  ) 

如果我用订阅替换地图它工作正常:

.subscribe( res =>{
                res.json();
                console.log("City is:"+ res.json().city.name)
            });

就其价值而言,在 Angular 5 中,我发现res.json is not a function错误,如果响应是纯 json,只需返回res即可修复。

尝试import 'rxjs/add/operator/map'; 而不是import 'rxjs/Rx'; . 那应该可以解决问题。

你不需要使用这个: .map((res: Response) => res.json() ); .map(res => res.json()); 因为HttpClient.get()提供或应用于res.json()并返回Observable<HttpResponse<string>>

您不再需要自己再次调用此函数。 简单地说就是这样: .map(res => res ); 这可以解决或解决问题。

如果您的响应已经是 Json,则无需调用res.json()您可以直接使用res在这种情况下甚至不需要使用map

  getData(){
  return  this.http.get("URI");
}

尝试只放这样

.map((response: Response) => response)

这项工作肯定适用于 Angular

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM