Как преобразовать Observable в array[]
у меня есть следующий метод в TypeScript, мне нужно привязать к угловой сетке
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;
}
но GetCoutries вернет Observable любого, неспособного привязаться к rowData?
как преобразовать Observable в CountryData[] в typescript ?
вы найдете данные JSON здесь: http://services.groupkt.com/country/get/all
4 ответов
вам нужно будет подписаться на ваши наблюдаемые:
this.CountryService.GetCountries()
.subscribe(countries => {
this.myGridOptions.rowData = countries as CountryData[]
})
и в вашем html, где это необходимо, вы можете передать async
труба к нему.
используя HttpClient (замена Http) в Angular 4.3+, весь процесс отображения/литья упрощается/устраняется.
используя класс CountryData, вы бы определили такой метод обслуживания:
getCountries() {
return this.httpClient.get<CountryData[]>('http://theUrl.com/all');
}
затем, когда вам это нужно, определите массив следующим образом:
countries:CountryData[] = [];
и подписаться на него такой:
this.countryService.getCountries().subscribe(countries => this.countries = countries);
полная настройка ответа тут также.
Это должно работать:
GetCountries():Observable<CountryData[]> {
return this.http.get(`http://services.groupkt.com/country/get/all`)
.map((res:Response) => <CountryData[]>res.json());
}