我的一个角度组件需要允许订阅它所拥有的数字。我试图把这个数字变成一个可观测值,以便其他人可以订阅它。Rxjs可观察订阅永远不会正确发布
我的出版商看起来像
private countChanged = new BehaviorSubject<any>(null);
public historyTimespanChanged$ = this.countChanged.asObservable();
private publish() {
this.countChanged.next(this.count);
}
expandTimeSpan() {
this.count ++;
this.publish();
}
reset() {
this.count = 0;
this.publish();
}
getHistoricalCount() {
return Observable.of(this.count);
}
我的观察貌似
this.historyComponent.getHistoricalCount()
.subscribe(count => {
if (count !== 0) {
console.log('new history timespan expanded: ', count);
this.historyCount = count;
this.retrieveHistoricalData();
}
});
但用户不会被调用。 任何人都可以看到我做错了什么?
我很好奇, BehaviourSubject是不是一个可观察的? OP是否不直接创建订阅? – adz5A
@ adz5A它是;通过'asObservable'转换为真正的'Observable'只是更具防御性。它防止用户通过向上游发送值而意外污染主体。 – concat