2017-06-24 44 views
1

我想从我的服务调用具有间隔条件的组件方法。我正在尝试使用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); 
     }); 
    } 
+0

好像你的服务构造函数不设置对象右:'setDateWatch $:this.setDateWatch $ .asObservable ()'而不是'setDateWatch $:this.dateArray $ .asObservable()'。你的组件注册到一个observable,它从来没有得到任何值。 – Meir

+0

这仍然没有解决问题,仍然订阅没有被调用。我已经更改为'setDateWatch $:this.dateArray $ .asObservable()' – atluriajith

+0

订阅或处理程序? – Meir

回答

0

你有一个错误的@Meir指出;在服务的构造函数,改变

setDateWatch$: this.setDateWatch$.asObservable() 

setDateWatch$: this.dateArray$.asObservable() 

现在一切都正确布线。你仍然没有看到任何输出,因为没有任何东西被推入Subject。所以下面的行添加到您的组件构造的底部,或任何地方后您订阅:

this.service.initService();