【发布时间】:2017-06-24 07:07:48
【问题描述】:
我想从我的服务中调用具有间隔条件的组件方法。我正在尝试使用 rxjs 可观察但不知何故无法订阅组件中可观察的服务,请帮助我这里缺少什么。提前致谢。 这是我的服务和组件代码 sn-ps。
服务:
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);
});
}
【问题讨论】:
-
您的服务构造函数似乎没有正确设置对象:
setDateWatch$: this.setDateWatch$.asObservable()而不是 `setDateWatch$: this.dateArray$.asObservable()`。你的组件注册到一个永远不会获得任何值的可观察对象。 -
那仍然没有解决问题,仍然订阅没有被调用。我已更改为 'setDateWatch$: this.dateArray$.asObservable()'
-
订阅者还是处理者?
-
我已根据您的建议更新了 obervable 定义,但仍然无法调用组件订阅。
-
我想我知道它是什么,您在发出值后订阅。尝试将 dateArray$ 从
Subject更改为BehaviorSubject或更改为大小为 1 的ReplaySubject
标签: typescript rxjs observable angular2-services