angular2服务 - RXjs
问题描述:
我怎么防止出现错误而trynig通过ID来获得项目 - 如果我刷新页面级这是代码:angular2服务 - RXjs
服务代码:
getServices(): Observable <any> {
return this._http.get(this.APIURL + 'serives.json')
.map((resposne: Response) => <any> resposne.json())
.do(data => {
this.services = data
})
.catch(this.hendelError)
}
getService(id): any {
let myService;
if (this.services.length) {
myService = this.services.filter(service => service.id === id);
return myService;
} else {
this.getServices().subscribe(
data => {
myService = this.services.filter(service => service.id === id);
return myService;
}
)
}
}
private hendelError(error: Response) {
console.log('error', error);
return Observable.throw(error.json().error || 'server error');
}
和组件代码是:
ngOnInit() {
if(this._manager.services.length){
this.services = this._manager.services;
return;
}else{
this._manager.getServices()
.subscribe(
data => {this.services = data;
console.log('data',data);}
)
}
}
,当我刷新页面我得到这个错误:
main.bundle.js:46117 EXCEPTION: Uncaught (in promise): Error: Error in ./ServicedetailsComponent class ServicedetailsComponent_Host - inline template:0:0 caused by: Cannot read property '0' of undefi
斯内德
答
Angular 2不是“刷新页面”友好的。当你刷新页面时,你重新加载你的应用程序。
解决方案是传递路径中的所有上下文(使用路由器)和sessionStorage(或localStorage)。然后,您将可以在当前上下文中重新加载应用程序。
显示完整的组件及其模板。 – mxii