use*_*714 3 typescript angular
我正在学习Angular 2和Typescript。我正在构建一个简单的Web应用程序,该应用程序从WEB API抓取数据并将其显示在列表中。然后,一旦用户单击列表中的项目,他们将被带到详细信息页面。
我有一个创建的服务来进行API调用,该服务执行以下操作:
GetData() {
let data = this.http.get('http://server.name/api/GetData')
.map((res) => res.json());
return data;
}
Run Code Online (Sandbox Code Playgroud)
然后在一个组件中,我订阅这样的数据:
this.myService.GetData()
.subscribe((myService) => this.items = myService);
Run Code Online (Sandbox Code Playgroud)
当http.get返回时,我想在从GetData()方法返回之前对JSON对象进行一些处理。例如,添加一个名为ID的新属性。本质上类似于下面的伪代码:
for each(item in data) {
item.ID = newID(); //method for creating IDs
}
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以在以下代码中使用GetData的代码进行处理map:
// For RxJS v5
this.http
.get('http://server.name/api/GetData')
.map(result => {
const items = <any[]>result.json(); // could be SomeItem[] instead of any[]
items.forEach(item => item.ID = ...);
return items;
});
// For RxJS v6
this.http
.get('http://server.name/api/GetData')
.pipe(map(result => {
const items = <any[]>result.json(); // could be SomeItem[] instead of any[]
items.forEach(item => item.ID = ...);
return items;
}));
Run Code Online (Sandbox Code Playgroud)
然后,当您在订阅中收到对象时,应该为项目分配ID。
这是对RxJs Observable文档的参考:http ://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-map
| 归档时间: |
|
| 查看次数: |
9417 次 |
| 最近记录: |