Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何转换可观测值<;任何>;数组[]_Angular_Typescript_Rxjs - Fatal编程技术网

Angular 如何转换可观测值<;任何>;数组[]

Angular 如何转换可观测值<;任何>;数组[],angular,typescript,rxjs,Angular,Typescript,Rxjs,我在typescript中有以下方法,我需要绑定到角度网格 CountryService GetCountries() { return this.http.get(`http://services.groupkt.com/country/get/all`) .map((res:Response) => <CountryData[]>res.json().RestResponse["result"]); } 但是GetCourties将返回任何可观察的,无法绑定

我在typescript中有以下方法,我需要绑定到角度网格

CountryService

GetCountries()  {
  return this.http.get(`http://services.groupkt.com/country/get/all`)
    .map((res:Response) => <CountryData[]>res.json().RestResponse["result"]);
}
但是GetCourties将返回任何可观察的,无法绑定到rowData的

如何在typescript中将Observable转换为CountryData[]


您可以在这里找到JSON数据:

您需要订阅您的可观察对象:

this.CountryService.GetCountries()
    .subscribe(countries => {
        this.myGridOptions.rowData = countries as CountryData[]
    })
而且,在html中,只要需要,您都可以将
异步管道传递给它。

这应该可以:

GetCountries():Observable<CountryData[]>  {
  return this.http.get(`http://services.groupkt.com/country/get/all`)
    .map((res:Response) => <CountryData[]>res.json());
}
使用Angular 4.3+中的HttpClient(Http的替代品),整个映射/转换过程变得更简单/省去了

使用CountryData类,您可以定义如下服务方法:

getCountries()  {
  return this.httpClient.get<CountryData[]>('http://theUrl.com/all');
}
countries:CountryData[] = [];
this.countryService.getCountries().subscribe(countries => this.countries = countries);
然后像这样订阅:

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

完整的安装答案。

//组件。home.ts:

  contacts:IContacts[];


ionViewDidLoad() {
this.rest.getContacts()
.subscribe( res=> this.contacts= res as IContacts[]) ;
//重新排列。仅接受数组

    Reorder(indexes){
  reorderArray(this.contacts, indexes)
}
getContacts(): Observable<IContacts[]> {
return this.http.get<IContacts[]>(this.apiUrl+"?results=5")
//服务。res.ts

    Reorder(indexes){
  reorderArray(this.contacts, indexes)
}
getContacts(): Observable<IContacts[]> {
return this.http.get<IContacts[]>(this.apiUrl+"?results=5")
getContacts():可观察{
返回this.http.get(this.apirl+“?results=5”)

它工作正常

您需要订阅可观察的:
this.CountryService.GetCountries().subscribe(result=>this.myGridOptions.rowData=result);
您能检查一下这个json services.groupkt.com/country/get/all如何转换我的CountryData[]this.myGridOptions.rowData未定义。未将数据绑定到网格您可以检查此json如何转换my CountryData[]@Ragavan您是否在构造函数中初始化了
this.myGridOptions.rowData
?是的,我在constructor@Ragavan您需要找出为什么您的
this.myGridOptions.rowData
未定义。请使用控制台进行调试我的错误严重性越来越低:“错误”消息:“类型”Observable“不可分配给您。”pe“Observable”。类型“CountryData”不可分配给类型“CountryData[]”。类型“CountryData”中缺少属性“length”。“位于:'90,3'源:“ts”
GetCountries()  {
  return this.http.get(`http://services.groupkt.com/country/get/all`)
    .map((res:Response) => <CountryData[]>res.json().RestResponse["result"]);
}