Angular 如何转换可观测值<;任何>;数组[]
我在typescript中有以下方法,我需要绑定到角度网格 CountryServiceAngular 如何转换可观测值<;任何>;数组[],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将返回任何可观察的,无法绑定
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"]);
}