以下代码在Chrome控制台上返回:ERROR TypeError: t.json(...).map is not a function、ng serve -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) {}
}
...我一直在检查一些问题,例如mapping a HTTP response to a JSON and then mapping the JSON to a model,并将我的代码/方法更改为:
extractData(result: Response): UsersData[] {
return result.json().map(res => ({
_id:res.message._id,
email:res.message.email,
fullName:res.message.fullName
}) as UsersData)
.subscribe(result => result = result); ;
}但我总是犯同样的错误。
发布于 2017-10-09 13:59:16
.map方法可用于数组,而不是对象。
造成错误的最可能原因是,如果您有这样的响应:
{
someKey: [1, 2, 3, 4]
}您需要使用:
result.json().someKey.map( //...如果JSON实际上遵守了您的接口,您甚至可以简单地使用以下内容:
return <UsersData[]>result.json().someKey;https://stackoverflow.com/questions/46647644
复制相似问题