2016-01-29 31 views
2

如何將主體轉換爲RxJs 5中的Observable?例如,當我們想要公開主題以進行訂閱,但不希望控制對其調用next()時,此功能非常有用,並且更願意將新值的發佈保留爲私有。如何將主體轉換爲RxJs中的Observable 5

的文檔(見here)提到這樣的事情:

var subject = new Rx.Subject(); 

var obs = subject.asObservable(); 

但RxJs 5目前這不起作用(阿爾法8),我們得到以下錯誤:

"TypeError: subject.asObservable is not a function 

回答

2

RxJS 5是一個重寫(目前處於測試階段),除了其他變化外,還有很多renamed/removed methods。其中一個被刪除的是asObservable

您可以通過創建一個可觀察與私主體的訂閱功能獲得相同的功能:

const subj = new rx.Subject(); 
const exposed = new rx.Observable(fn => subj.subscribe(fn)); 
+0

對它被刪除的原因有所瞭解,被認爲是不好的做法或什麼? –

+0

我已添加指向遷移指南的鏈接。就像我提到的那樣,這是一個重寫,我想他們想擺脫他們沒有看到的常用或必要的東西。他們還提到希望符合es7的可觀察性。該頁面以關於打開關於缺失功能的問題/ PR的部分結束,因此您可以嘗試。 – Mosho

+3

它沒有被刪除,只是被忽視。它將在下一個版本中發佈。 –

12

FYI:Subject.prototype.asObservable()將在下一版本5.0.0-beta.2。您可以撥打mySubject.asObservable()

+1

現在已經結束並正在工作,TSD也會更新。 – ibgib