首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Observable<any>转换为array[]

如何将Observable<any>转换为array[]
EN

Stack Overflow用户
提问于 2017-07-06 05:48:29
回答 5查看 154.9K关注 0票数 46

我在打字稿中有如下方法,我需要绑定到角网格。

CountryService

代码语言:javascript
复制
GetCountries()  {
  return this.http.get(`http://services.groupkt.com/country/get/all`)
    .map((res:Response) => <CountryData[]>res.json().RestResponse["result"]);
}

GridComponent

代码语言:javascript
复制
  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

代码语言:javascript
复制
export class CountryData{
  name: string;
  alpha2_code: string;
  alpha3_code: string;
}

但是GetCoutries会返回可观察到的,无法绑定到rowData的吗?

如何在打字稿中将“可观察”转换为“CountryData[]”?

您可以在这里找到JSON数据:http://services.groupkt.com/country/get/all

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-07-06 05:59:58

您需要订阅您的可观察到的:

代码语言:javascript
复制
this.CountryService.GetCountries()
    .subscribe(countries => {
        this.myGridOptions.rowData = countries as CountryData[]
    })

而且,在您的html中,只要需要,就可以将async管道传递给它。

票数 55
EN

Stack Overflow用户

发布于 2017-11-03 01:23:39

使用HttpClient (Http's替换)在角4.3+,使整个映射/铸造过程变得更简单/消除。

使用您的CountryData类,您将定义如下所示的服务方法:

代码语言:javascript
复制
getCountries()  {
  return this.httpClient.get<CountryData[]>('http://theUrl.com/all');
}

然后,当您需要它时,定义如下数组:

代码语言:javascript
复制
countries:CountryData[] = [];

然后像这样订阅:

代码语言:javascript
复制
this.countryService.getCountries().subscribe(countries => this.countries = countries);

一个完整的设置回答is posted here也。

票数 27
EN

Stack Overflow用户

发布于 2017-07-07 04:26:09

这应该是可行的:

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

为此,您需要导入以下内容:

代码语言:javascript
复制
import 'rxjs/add/operator/map'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44940695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档