J'ai la méthode suivante dans TypeScript, je dois me lier à la grille angulaire
CountryService
GetCountries() {
return this.http.get(`http://services.groupkt.com/country/get/all`)
.map((res:Response) => <CountryData[]>res.json().RestResponse["result"]);
}
GridComponent
template: `
<ag-grid-ng2 style="width: 100%" #agGrid class="ag-material"
rowHeight="50"
[gridOptions]="myGridOptions"
>
</ag-grid-ng2>
`,
this.myGridOptions.rowData= this.CountryService.GetCountries();
CountryData
export class CountryData{
name: string;
alpha2_code: string;
alpha3_code: string;
}
Mais GetCoutries renverra Observable, incapable de se lier à rowData?
Comment convertir Observable en CountryData [] dans TypeScript?
vous trouvez les données JSON ici: http://services.groupkt.com/country/get/all
Vous devrez vous abonner à vos observables:
this.CountryService.GetCountries()
.subscribe(countries => {
this.myGridOptions.rowData = countries as CountryData[]
})
Et, dans votre code html, vous pouvez lui transmettre le code async
, le cas échéant.
En utilisant HttpClient (le remplacement de Http) dans Angular 4.3+, l'ensemble du processus de cartographie/diffusion est simplifié/éliminé.
En utilisant votre classe CountryData, vous définiriez une méthode de service comme celle-ci:
getCountries() {
return this.httpClient.get<CountryData[]>('http://theUrl.com/all');
}
Puis quand vous en avez besoin, définissez un tableau comme celui-ci:
countries:CountryData[] = [];
et abonnez-vous comme ça:
this.countryService.getCountries().subscribe(countries => this.countries = countries);
Une réponse complète d’installation est publiée ici aussi.
Cela devrait fonctionner:
GetCountries():Observable<CountryData[]> {
return this.http.get(`http://services.groupkt.com/country/get/all`)
.map((res:Response) => <CountryData[]>res.json());
}
Pour que cela fonctionne, vous devez importer les éléments suivants:
import 'rxjs/add/operator/map'
// Composant. home.ts:
contacts:IContacts[];
ionViewDidLoad() {
this.rest.getContacts()
.subscribe( res=> this.contacts= res as IContacts[]) ;
// reorderArray. accepte uniquement les tableaux
Reorder(indexes){
reorderArray(this.contacts, indexes)
}
// Un service . res.ts
getContacts(): Observable<IContacts[]> {
return this.http.get<IContacts[]>(this.apiUrl+"?results=5")
Et ça marche bien