我的一個角度組件需要允許訂閱它所擁有的數字。我試圖把這個數字變成一個可觀測值,以便其他人可以訂閱它。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