Angular2 服务变量在路由更改时被重置

Angular2 Service variables being reset on route change

我有一项服务可以用来跟踪我的模型状态。我有多个组件想要访问此服务变量属性。当第一个组件在 init 上加载时,我设置了模型,但是当我在路由更改后尝试从我的第二个组件访问该模型时,该变量现在未定义。下面是我所说的示例。

组件 1

constructor(private service: Service, private route)

ngOninit(){
  this.service.setModel();
  console.log(this.service.getModel()); <-- works fine
}

componentButton1Click(){
  route.navigateByUrl(component2route) <--works fine
}

组件 2

constructor(private service: Service)

ngOninit(){
  console.log(this.service.index); <-- undefined
}

服务

private index: number;

constructor(private http: Http)

getModel(){
   return this.index; <-- works fine
}

setModel(){
  this.index = this.http.get('somejsonfile.json').index;
}

导致此问题的最常见原因是服务注册了多次。检查每个组件和模块中 providers 数组的内容,并确保它仅在 ONE 处注册。

这是一个代码片段:

  providers: [
    ProductService,
    ProductGuardService
  ]

这些是 @Component@NgModule 元数据的一部分