angular2服务 - RXjs

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斯内德

+0

显示完整的组件及其模板。 – mxii

Angular 2不是“刷新页面”友好的。当你刷新页面时,你重新加载你的应用程序。

解决方案是传递路径中的所有上下文(使用路由器)和sessionStorage(或localStorage)。然后,您将可以在当前上下文中重新加载应用程序。