序列化rxjs可观察到自定义业务对象
问题描述:
如何序列化由我的业务对象的http调用返回的rxjs observable?示例如下提到序列化rxjs可观察到自定义业务对象
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>
答
一个简单的附加.map
,在那里你每个阵列条目中映射应该工作:
this.myData$ = this._http.get('/data/myData.json')
.map(response => <any[]>response.json())
.map(items => items.map(item => new Custom(item));
这就是为容易:)谢谢!我想我应该深入学习rxjs操作符来理解它是如何工作的。 – Sal