example ejemplo create angular typescript rxjs

angular - ejemplo - Cómo convertir Observable<any> a matriz



return observable angular 6 (4)

Tengo el siguiente método en mecanografiado, necesito enlazar a la cuadrícula angular

Servicio País

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();

PaísDatos

export class CountryData{ name: string; alpha2_code: string; alpha3_code: string; }

¿Pero GetCoutries devolverá Observable de cualquiera, no puede enlazar a rowData?

¿Cómo convertir Observable a CountryData [] en mecanografía?

encuentra datos JSON aquí: http://services.groupkt.com/country/get/all


Al usar HttpClient (reemplazo de Http) en Angular 4.3+, todo el proceso de mapeo / conversión se simplifica / elimina.

Usando su clase CountryData, definiría un método de servicio como este:

getCountries() { return this.httpClient.get<CountryData[]>(''http://theUrl.com/all''); }

Luego, cuando lo necesites, define una matriz como esta:

countries:CountryData[] = [];

Y suscríbete así:

this.countryService.getCountries().subscribe(countries => this.countries = countries);

Una respuesta de configuración completa se publica aquí también.


Deberás suscribirte a tus observables:

this.CountryService.GetCountries() .subscribe(countries => { this.myGridOptions.rowData = countries as CountryData[] })

Y, en su html, donde sea necesario, puede pasarle el conducto async .


Esto debería funcionar:

GetCountries():Observable<CountryData[]> { return this.http.get(`http://services.groupkt.com/country/get/all`) .map((res:Response) => <CountryData[]>res.json()); }

Para que esto funcione, necesitarás importar lo siguiente:

import ''rxjs/add/operator/map''


//Componente. home.ts:

contacts:IContacts[]; ionViewDidLoad() { this.rest.getContacts() .subscribe( res=> this.contacts= res as IContacts[]) ;

// reorderArray. acepta solo matrices

Reorder(indexes){ reorderArray(this.contacts, indexes) }

// Servicio . res.ts

getContacts(): Observable<IContacts[]> { return this.http.get<IContacts[]>(this.apiUrl+"?results=5")

Y funciona bien