了解Angular共享服务

时间:2018-10-24 19:11:35

标签: angular service components observable behaviorsubject

我想随着组件的变化随时更新其总量,我想知道这是正确的吗:

我有一个shared.service.ts注入到我的组件中,所以看起来像这样(我的共享服务):

shared.service.ts

private sumEmit= new BehaviorSubject<number>(0);

public updateValues() {
this.sum= 0;
this.sum+= +(price*quant).toFixed(2);
this.sumEmit.next(this.sum);
}

在服务中也获得总金额的方法:

 getTotal(): BehaviorSubject<number> {
    return this.sumEmit;
  }

因此,每次调用updateValues()方法时,它都会发出sum的值,对吗?

在每次更改值时都需要检索值的组件中,我这样做了:

mycomponent.component.ts

首先,我注入了共享服务,然后在ngOnInit生命周期中,我写道:

// simple variable to hold value from service

total : number;


ngOnInit() 
{
    this.total = this.SharedService.getTotal();
}

这是否意味着每次更改总金额时我的值都是最新的?

对我来说最令人困惑的部分是,我在打开组件时呈现的ngOnInit中只调用了一次此方法,但是值保持更新。有人可以向我解释一下吗?服务中的值更改时,组件中的变量如何知道?哪一部分负责?

谢谢

1 个答案:

答案 0 :(得分:1)

  

当值更改时,组件中的变量如何知道   服务吗?

您正在使用BehaviourSubject,这意味着新订阅者将始终获得同步发出的最后一个值。

  

哪个部分负责?

this.sumEmit.next(this.sum);