【发布时间】:2017-01-05 09:25:28
【问题描述】:
处理http响应的常用方法是这样的:
return this._http.get(url)
.map((res: Response) => res.json());
它为您提供Observable<Object[]>,其中Object 是从json 反序列化动态创建的类型。
然后你可以在*ngFor="let item of result | async"等中使用这个结果...
我想获得一个特定的类型实例(意思是使用new 运算符来调用该类型的构造函数)。
尝试了不同的方法来实现类似的目标:
.map((res: Response) => { let obj = res.json(); return new MyObject(obj.id, obj.name);})
但收到此错误:Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.
这种方式似乎行得通,但太复杂了,可能效果不佳:
.map((res: Response) => {
let results = <MyObject[]>[];
let obj = res.json();
obj.forEach(
function (o: any) {
results.push(new MyObject(o.id, o.name));
}
);
return results;
}
谢谢!
【问题讨论】:
-
你能试试
Observable<Array<Object>>吗? -
*ngFor只支持数组,不支持对象 -
@GünterZöchbauer 我需要找时间浏览这些帖子。我希望 Observable 中内置的东西也能实现这一点。我用似乎可行但我不喜欢的方式更新了我的问题。
标签: json angular rxjs angular-http