如何序列化对我的业务对象的http调用返回的rxjs observable?样品如下所述
myData.json:
[{
"prop1" : "val1",
"prop2" : "val2",
"prop3" : "val3",
"prop4" : "val4",
}, {
"prop1" : "val11",
"prop2" : "val22",
"prop3" : "val33",
"prop4" : "val44",
},......]
可观察:
this.myData$ = this._http.get('/data/myData.json')
.map(response => <any[]>response.json());
模板:
<ul>
<li class="text" *ngFor="let item of myData$ | async">
{{item.prop1}} - {{item.prop2}} - {{item.prop3}}
</li>
</ul>
使用上面的代码,一切都很好,但是我需要将异步接收的JSON对象转换为不同业务对象的实例,并且仍然异步绑定到模板。我如何实现这一目标。哪个rxjs运算符让我实现了这个目标?
我的商务舱是:
export class Custom {
prop10: string;
prop20: string;
constructor(data) {
this.prop10 = this.evaluate(data.prop1);
this.prop20 = data.prop2;
}
private evaluate(val): string {
// do some custom business rules....
return "something";
}
}
我的实际模板
<ul>
<li class="text" *ngFor="let item of myData$ | async">
{{item.prop10}} - {{item.prop20}}
</li>
</ul>
答案 0 :(得分:1)
一个简单的附加.map
,您可以在其中映射每个数组条目:
this.myData$ = this._http.get('/data/myData.json')
.map(response => <any[]>response.json())
.map(items => items.map(item => new Custom(item));