私はJSONフィードからデータを取得し、次のコードでservice.tsファイルがあります:Typescript/Angular 2を使用してアイテムIDを持つJSONフィードから1つのアイテムを取得するにはどうすればよいですか?
@Injectable()
export class HeroService {
constructor(private http: Http) { }
private _heroesUrl = '/heroes.json';
getHeroes() {
return this.http.get(this._heroesUrl)
.map(res => <Hero[]>res.json().data)
.do(data => console.log(data))
.catch(this.handleError);
}
private handleError(error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
getHero() {
//** code to go here
}
}
とサービスを使用するコンポーネントファイル:
export class HeroesComponent implements OnInit {
heroes: Hero[];
selectedHero: Hero;
errorMessage: any;
constructor(private _router: Router, private _heroService: HeroService) { }
getHeroes() {
this._heroService.getHeroes()
.subscribe(
heroes => this.heroes = heroes,
error => this.errorMessage = <any>error);
}
getHero() {
let id = this._routeParams.get('id');
//** code to go here
}
}
さて、getHeroes()作品をheroes.jsonのすべてのアイテムをservice.ts経由で取得します。しかし、私がしようとしているのは、アイテムの "id"を使ってheroes.jsonからアイテムを1つだけ取り出します。これをどうやって行うのですか?私は.filterを使ってみましたが、うまくいきませんでした。私は遅すぎると思う
getHero(id) {
return this.http.get(this._heroesUrl)
.map(res => (<Hero[]>res.json().data).filter(hero => hero.id === id))
.do(data => console.log(data))
.catch(this.handleError);
}