I'm trying to find a solution to show the overall result that I am receiving from the API. Currently only one game and its details can be seen in the app.
My service looks like this:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable, map } from 'rxjs';
import { environment } from 'src/environments/environment';
import { Igameschart } from '../interfaces';
interface IgamesData {
results : [{
name : string,
released : number,
platform : string,
background_image : string,
rating : number
}]
}
export interface IGamesService{
getGames(genre:string):Observable<Igameschart>
}
@Injectable({
providedIn: 'root'
})
export class GamesService implements IGamesService {
constructor(private httpClient: HttpClient) { }
getGames(genre:string):
Observable<Igameschart>{
return this.httpClient.get<IgamesData>(
`${environment.baseUrl}api.rawg.io/api/games?` +
`genres=${genre}&key=${environment.appId}`
) .pipe(map(data => this.tarnsformToIgamesData(data)))
}
private tarnsformToIgamesData(data:IgamesData):
Igameschart{
return {
name: data.results[0].name,
released: data.results[0].released,
platform: data.results[0].platform,
image:data.results[0].background_image,
rating:data.results[0].rating
}
}
}
It is embedded in view in this way:
<div class="container" *ngIf="gamesloaded">
<div>
<img [src]='gamesloaded.image' height="249px" width="512em">
</div>
<div>
<div id="gdata">{{gamesloaded.name}}</div>
<div id="gdata"> {{gamesloaded.released | date:'fullDate'}}</div>
<div id="gdata"> {{gamesloaded.platform}}</div>
<div id="gdata">{{gamesloaded.rating}}</div>
</div>
</div>
<div *ngIf="!gamesloaded">
<span>No data available</span>
</div>
The code can be found here -> https://stackblitz.com/edit/angular-cbt8ka
I tried looking for solutions to iterate the result but couldn't find one.