我想随着组件的变化随时更新其总量,我想知道这是正确的吗:
我有一个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
中只调用了一次此方法,但是值保持更新。有人可以向我解释一下吗?服务中的值更改时,组件中的变量如何知道?哪一部分负责?
谢谢
答案 0 :(得分:1)
当值更改时,组件中的变量如何知道 服务吗?
您正在使用BehaviourSubject,这意味着新订阅者将始终获得同步发出的最后一个值。
哪个部分负责?
this.sumEmit.next(this.sum);