我正在使用 Rxjs 在角度组件中可观察到并学习东西。我有一个场景,我需要根据某些事件将数据从组件传递到服务。
Price.service.ts
export class PriceService{
private priceUpdate: BehaviorSubject<Object> = new BehaviorSubject({});
private oldPriceUpdate: BehaviorSubject<Object> = new BehaviorSubject({});
getPriceUpdate(){
return this.priceUpdate.asObservable();
}
getOldPrice(){
return this.oldPriceUpdate.asObservable();
}
}
以上服务用于组件中获取价格更新。
Price.component.ts
@Component({
selector: 'price',
templateUrl: 'price.component.html',
styleUrls: ['price.component.css']
})
export class PriceComponent{
updateIndicator: BehaviorSubject<Object> = new BehaviorSubject({});
constructor(private priceService:PriceService, private techIndicator:TechnicalIndicatorService){
this.techIndicator.subscribeUpdateIndicator(this.updateIndicator.asObservable());
this.priceService.getPriceUpdate().subscribe(
(newPrice:any) => {
this.updatePrice(newPrice);
}
)
this.priceService.getOldPriceUpdate().subscribe(
(oldPrice:any ) => {
//some business logic
this.updateIndicator.next({{data: data, ....});
});
}
private updatePrice(newPrice:any){
//.... some business logic....
this.updateIndicator.next({data: data, ....});
}
}
在组件中从 PriceService 获得新价格后,我有另一项服务,我正在做一些技术研究。我需要将数据传递给服务,为此我使用组件中的行为主题并且服务正在订阅它。(与组件订阅的通常方法不同。)
请让我知道它是否是使用 observable 的有效方式。
技术指标.service.ts
export class TechnicalIndicatorService{
subscribeUpdateIndicator(updateIndicator:Observable<Object>){
updateIndicator.subscribe(
(obj:any) => {
// some logic
});
}
}
但是,订阅在 TechnicalIndicatorService 中只工作一次。对于之后的任何数据更新,它都不会触发订阅。请让我知道我在这里缺少什么。