我正在使用“行为”主题来选择版本。
public messageSource = new BehaviorSubject(release);
currentMessage =this.messageSource.asObservable()
setCheckedVersion(chkVersion){
console.log(chkVersion)
this.messageSource.next(chkVersion)
}
在滑块组件中,我要设置用于生成图表的点击版本。IN滑块组件
setCheckedVersion(chkVersion){
this.messageSource.next(chkVersion)
}
在图表组件中,我正在订阅更改
this.curMsg= this._sharedService.currentMessage.subscribe((chkVersion)=>
{this.checked_versions=chkVersion})
一切正常,但是当我更改路线并返回到图表组件时,它已获得两次订阅。为此,我已在OnDestroy上取消订阅此
ngOnDestroy() {
gantt.clearAll()
// this.curView.
this.curMsg.unsubscribe()
}
但是当我再次订阅时,它得到两个值,一个是最新数据,另一个是在路由之前选择的。 我如何只获取最新数据?
答案 0 :(得分:-2)
使用Behavior Subject
时遇到类似的问题。切换到Subject
解决了该问题。
Behavior Subject
保留先前的数据以供所有订户重用(可以在不使用可观察的代码的情况下随时检索该数据),并将无限期地返回该旧数据。您还可以向其中添加更多数据,这就是为什么您看到自己的效果的原因。
Subject
返回并忘记了,因此切换到该位置,您应该会很高兴。