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
元数据的一部分
我有一项服务可以用来跟踪我的模型状态。我有多个组件想要访问此服务变量属性。当第一个组件在 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
元数据的一部分