angular2未签署变更的主体
我有两个组件和一个由这两个组件共享的共享服务 shared.service.tsangular2未签署变更的主体,angular,angular2-services,angular-cli,Angular,Angular2 Services,Angular Cli,我有两个组件和一个由这两个组件共享的共享服务 shared.service.ts // ..... top level codes are skipped private pickAnalysisForBubble = new Subject<any>(); analysisForBubble$ = this.pickAnalysisForBubble.asObservable(); mapToggleToPointOrBubble(value) { this.
// ..... top level codes are skipped
private pickAnalysisForBubble = new Subject<any>();
analysisForBubble$ = this.pickAnalysisForBubble.asObservable();
mapToggleToPointOrBubble(value) {
this.pickAnalysisForBubble.next(value);
}
map.component.ts
// ..... top level codes are skipped
private pickAnalysisForBubble = new Subject<any>();
analysisForBubble$ = this.pickAnalysisForBubble.asObservable();
mapToggleToPointOrBubble(value) {
this.pickAnalysisForBubble.next(value);
}
我已经导入了shared.service
,并添加了一个构造函数。然后在ngOnInit
中尝试subscribe
更改,但这不起作用
我正在使用
subject
检测基于此的更改。我做错了什么?我猜您没有共享相同的服务实例。在引导应用程序时或在主组件中指定相应的提供程序:
bootstrap(AppComponent, [ SharedService ]);
或
如果在子组件的providers
属性中指定它,则不能确保共享同一实例
编辑
由于分层结构,每个组件都有自己的实例,而不是共享同一个实例。因此,共享服务应该作为提供者添加到
main
组件中。此外,电子共享服务不应包含在子组件的提供者中 是的,我在两个组件中都添加了sharedService
作为提供者。我在main.ts
文件中也在我的子组件中添加了sharedService
。仍然不起作用。有什么线索吗?这就是问题所在;-)在这种情况下,每个组件都有自己的实例,而不是共享同一个实例。这是因为层次结构。请从子组件中删除提供程序。他们阻止事情发生……是的,它在发生作用。从我的子组件中删除提供程序有效。
# analysisInteraction is the shared service constructor
this.analysisInteraction.analysisForBubble$.subscribe(
data => {
this.DrawType = data;
console.log("Drawtype fixed");
});
bootstrap(AppComponent, [ SharedService ]);
@Component({
(...)
providers: [ SharedService ]
})
export class AppComponent {
(...)
}