我有一项服务,用于跟踪模型的状态。我有多个组件,我想访问此服务变量属性。当第一个组件在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;
}
答案 0 :(得分:6)
此问题的最常见原因是该服务已注册多次。检查每个组件和模块中providers
数组的内容,确保它只在 ONE 位置注册。
以下是代码段:
providers: [
ProductService,
ProductGuardService
]
这些是@Component
或@NgModule
元数据