我是可观察的概念的新手,需要一些转换帮助.
我有一个服务,它返回一个Observable< Response>从一个Http请求,但我需要转换它做一个Observable< PriceTag>在connect方法中的DataSource上使用它.
反正有没有这样做?
我有一个服务,它返回一个Observable< Response>从一个Http请求,但我需要转换它做一个Observable< PriceTag>在connect方法中的DataSource上使用它.
反正有没有这样做?
这是我服务的方法:
getPriceTags(): Observable<Response> {
// Set the request headers
const headers = new Headers({ 'Content-Type': 'application/json' });
// Returns the request observable
return this.http.post(Constants.WEBSERVICE_ADDRESS + "/priceTag",null,{headers: headers});
}
这里是DataSource类,我需要将它作为Observable< PriceTag>返回:
export class PriceTagDataSource extends DataSource<PriceTag> {
constructor (private priceTagService: PriceTagService) {
super();
}
connect(): Observable<PriceTag> {
// Here I retrieve the Observable<Response> from my service
const respObs = this.priceTagService.getPriceTags();
// Now I need to return a Observable<PriceTag>
}
disconnect() {}
}
以下是我的请求回复的示例:
{
// This object is used to check if the query on the server was sucessful
"query": {
"sucessful": true
},// These are my PriceTags
"tags": [
{
"id": "1","name": "MAIN"
},{
"id": "2","name": "CARD"
}
]
}
从角度4.3开始,这可以自动完成.
例:
export class SomeService {
constructor(private http: HttpClient) {} // <--- NOTE: HttpClient instead of Http
getSome(): Observable<MyAwesomeObject> {
return this.http.get<MyAwesomeObject>.get('myUrl');
}
}
所以在你的情况下,这将是:
返回this.http.post< PriceTag>(Constants.WEBSERVICE_ADDRESS“/ priceTag”,{headers:headers});
再次,使用HttpClient而不是Http