角度 - 离子 2 - 无法读取未定义的属性"订阅"



我正在尝试实现离线模式,我已经做了这样的事情。

在我的Page.ts文件中

getnews() {
this._newsservice.GetNews(this.NewsFilterOptions).subscribe(res => {
this.newsArray = res;
this.loadingnews = false;
},
err => {
this.loadingnews = false;
},
() => {
});
}

在我的Service文件中

GetNews(FilterOptions: any) {
return this.utilitiesService.Get("news" + this.QueryBuilder(FilterOptions));
}

我的Utilities文件

public Get(endUrl: string) :Observable<any> { 
if (this._AppConfig.IsOnline) { // If Online Get From Server
...
return this.http.get(this.baseUrl + endUrl, options)
.map(response => {
//SAVE HTTP RESPONSE TO DICTIONARY
this._OfflineService.Set(this.baseUrl + endUrl, response);
return response.json()
});
}
else {
this._OfflineService.Get(this.baseUrl + endUrl).then(val => {
return Observable.of(val).map(o => o.json());
}).catch((err) => {
return Observable.throw("ERROR");
});

// FETCH HTTP RESPONSE FROM DICTIONARY
//return Observable.of(Data).map(o => o);
}

}

离线Service:我正在使用离子LocalStorage

Get(endUrl: string) {
// Or to get a key/value pair
return this.storage.get(endUrl);
}

Set(endUrl: string , data: any) {
// Or to get a key/value pair
this.storage.set(endUrl,data).then((val) => {
});
}

现在在线模式工作正常,但是当应用程序离线时,我得到 无法读取未定义的属性subscribe,尽管我返回可观察的。

使用Observable.fromPromise.

在您的Get()函数中,else部分:

return Observable.fromPromise(this._OfflineService.Get(this.baseUrl + endUrl))
.map(val => val.json())
.catch((err) => {
return Observable.throw("ERROR");
});

这会将承诺转换为可观察量,您可以使用map来解析 json 并最终订阅。

相关内容

  • 没有找到相关文章

最新更新