私はC#Linqに精通していますが、ng2 + TypeScript + rxjs開発では初めてです。Linq TypsScript + rxjsに最初に相当
以下のコードの方法では、First
と一致する項目を監視対象リストから取得する方法はありますか。
モデル
export class Master {
Id: string;
SomeProperty: string;
Details: Detail[];
}
export class Detail {
DetailId: string;
DetailProperty: string;
}
方法
getMaster(id:string): Observable<Master>{
return this.http.get(this.webUrl + "/" + id) // web api
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json() as Master[];
return body || [];
}
getDetails(masterId: string): Observable<Detail[]>{
return this.getMaster(masterId)
.map(master => master.Details);
}
getDetailByDetailId(masterId: string, detailId: string): Observable<Detail>{
return this.getDetails(masterId)
.first(d => d.DetailId === detailId); // <-- Error occurred
}
getDetailByDetailId
方法は、2つのエラーを次与えます。
Error:(47, 16) TS2322: Type 'Observable<Detail[]>' is not assignable to type 'Observable<Detail>'. Type 'Detail[]' is not assignable to type 'Detail'. Property 'DetailId ' is missing in type 'Detail[]'.
Error:(48, 45) TS2339: Property 'DetailId' does not exist on type 'Detail[]'.