无法订阅组件中的角度服务方法
问题描述:
我想从我的服务调用具有间隔条件的组件方法。我正在尝试使用rxjs observable,但不知何故无法在组件中执行可观察服务的订阅,请帮助我了解我在这里失踪的内容。提前致谢。 这里是我的服务和组件代码片段。无法订阅组件中的角度服务方法
服务:
private dateArray$: Subject <any> ;
public obserableObjects: {
setDateWatch$: Observable <any> ;
};
constructor() {
this.dateArray$ = new Subject <any>();
this.obserableObjects = {
setDateWatch$: this.setDateWatch$.asObservable()
};
);
public initservice() {
this.dateArray$.next('test');
}
组件:
private dateInf$: Observable<any>;
constructor() {
@Inject(Service) private service: Service) {
this.dateInf$ = this.service.obserableObjects.setDateWatch$;
console.log(this.dateInf$);
console.log("***********************************");
this.dateInf$.subscribe((data) => {
console.log(data);
});
}
答
你有一个错误的@Meir指出;在服务的构造函数,改变
setDateWatch$: this.setDateWatch$.asObservable()
到
setDateWatch$: this.dateArray$.asObservable()
现在一切都正确布线。你仍然没有看到任何输出,因为没有任何东西被推入Subject
。所以下面的行添加到您的组件构造的底部,或任何地方后您订阅:
this.service.initService();
好像你的服务构造函数不设置对象右:'setDateWatch $:this.setDateWatch $ .asObservable ()'而不是'setDateWatch $:this.dateArray $ .asObservable()'。你的组件注册到一个observable,它从来没有得到任何值。 – Meir
这仍然没有解决问题,仍然订阅没有被调用。我已经更改为'setDateWatch $:this.dateArray $ .asObservable()' – atluriajith
订阅或处理程序? – Meir