在共同服务中实现观察者的正确方法是什么?

时间:2018-08-29 14:10:01

标签: angular service observable

我有2个组件和它们之间连接的通用服务,我从第一个组件发送数据并在服务中获取此数据,但第二个组件未获取此数据。 第一部分: 初始化:

 constructor(private commonService: commonService) {}

并发送如下数据:

this.commonService.notify(this.Index);

常用服务

private source = new Subject<number>(0);
  public indexChanged$ = this.source.asObservable();
  constructor() {
  }

 public notify(n:number) {
    this.source.next(n);
 }

第二个组件网:

constructor(private commonService: commonService) {
    commonService.indexChanged$.subscribe(number  =>{
      console.log("number", number)
    });

我看上去here并做了同样的事情,但从未获得价值。 谢谢

* edit-我在第二个部分获得了初始编号,但此后没有任何内容

1 个答案:

答案 0 :(得分:0)

您可以使用BehaviorSubject。

BehaviorSubject保留值并对其进行初始化,然后可以调用notify方法并设置新值。

常用服务

 private source = new BehaviorSubject<number>(0);
 public indexChanged$ = this.source.asObservable();

 constructor() {
 }

 public notify(n:number) {
   this.source.next(n);
}

第二部分:

 constructor(private commonService: commonService) {
   commonService.indexChanged$.subscribe(number  =>{
     console.log("number", number)
   });
 }