Angularjs Can';将HTTP响应映射到接口

Angularjs Can';将HTTP响应映射到接口,angularjs,typescript,angular-material2,Angularjs,Typescript,Angular Material2,以下代码在Chrome控制台上返回:ERROR-TypeError:t.json(…).map不是一个函数ng-service-prod和ng-test--sm=false运行正常 我想将结果映射到接口中的模型,并以HTML格式输出它们 .... export interface UsersData { _id: number; email: string; fullName: string; } export class RetrieveUsrData { priva

以下代码在Chrome控制台上返回:
ERROR-TypeError:t.json(…).map不是一个函数
ng-service-prod
ng-test--sm=false
运行正常

我想将结果映射到接口中的模型,并以HTML格式输出它们

....
export interface UsersData {
   _id: number;
   email: string;
   fullName: string;
}
export class RetrieveUsrData {
    private issuesUrl = 'http://localhost:4000/users';
    getUserDetails(): Observable<UsersData[]> {
      return this.http.get(this.issuesUrl)
                      .map(this.extractData)
    }

    extractData(result: Response): UsersData[] {
        console.log(JSON.stringify( result.json()) );
        return result.json().map(usr => {
            return {
                _id: usr.message._id,
                email: usr.message.email,
                fullName: usr.message.fullName
            }
        }).subscribe(result => result = result);
    }
    constructor(private http: Http) {}
}
...

但是我一直得到相同的错误。

在数组上,而不是对象上,可以使用
.map
方法

最有可能导致错误的原因是,如果您有如下响应:

{
    someKey: [1, 2, 3, 4]
}
您需要使用:

result.json().someKey.map( //...
如果JSON确实符合您的接口,您甚至可以简单地使用以下内容:

return <UsersData[]>result.json().someKey;
返回result.json().someKey;

来自
http://localhost:4000/users
API@PankajParkar:这是
http://localhost:4000/users
API:
{“错误”:false,“消息”:[{“\u id”:“523”,“电子邮件”:”xxxxx@foo.de,“全名”:“xxxx YYYY”},{“\u id”:“594”,“电子邮件”:xxxxx@foo.de,“全名”:“xxxx YYYY”},{“\u id”:“88”,“电子邮件”:xxxxx@foo.de,“全名”:“xxxx YYYY”},{“\u id”:“59”,“电子邮件”:xxxxx@foo.de,“全名”:“xxxx YYYY”}]}
。但现在已经修好了。谢谢我也这么想@芬顿已经回答了,谢谢:)这是我的回答:
{“error”:false,“message”:[{“\u id”:“523”,“email”:”xxxxx@foo.de,“全名”:“xxxx YYYY”},{“\u id”:“594”,“电子邮件”:xxxxx@foo.de,“全名”:“xxxx YYYY”},{“\u id”:“88”,“电子邮件”:xxxxx@foo.de,“全名”:“xxxx YYYY”},{“\u id”:“59”、“电子邮件”:xxxxx@foo.de“,“全名”:“xxxx yyyy”}]}
太好了!我的不好。只是错过了在我的JSON响应中捕获
消息的
键。正如您所说,
映射()
必须在
数组上执行
。因此,在我的回复
消息中
是一个对象数组。节省了我的时间。请回答一个问题。将键
\u id
的值从JSON对象传递到其他组件的最佳方法是:
@Input()\u id
或为此使用某种服务将是解决方案?谢谢。
return <UsersData[]>result.json().someKey;