2016-02-22 151 views
6

我對Observables很新。我怎樣才能從一個簡單的字符串創建Observable?然後訂閱它並在更改時輸出它。從一個字符串(角2)可觀察到

這有道理嗎?

我沒有任何運氣與谷歌搜索。可能錯誤的關鍵字?


添加一些代碼更好的解釋:

My constructor on service 

constructor() { 
    // Create observable stream to output our data 
    this.notice = Observable.create(
    (observer) => this.observer = observer; 
); 
}; 

My method on service 

set(string) { 
    this.notice.subscribe((value) => { 
    // Push the new value into the observable stream 
    this.observer.next(string); 
    }, (error) => console.log('Could not set data.')); 
} 

Calling service method 

setNotice(event) { 
    event.preventDefault(); 

    // Calling service to set notice 
    this.noticeService.set('This is a string'); 
} 

我想我錯在這裏做什麼?但不知道如何問。我會很感激任何解釋。

+0

waht關於this.notice.unsubscribe()在ngDestroy()呢?我知道這是手動添加事件偵聽器的內存泄漏的常見原因......所以我認爲這將是相同的。 – JGFMK

+0

我也會爲此考慮BehaviorSubject。 https://stackoverflow.com/questions/39494058/behaviorsubject-vs-observable – JGFMK

回答

12

可以使用Observable類的of方法:

var obs = Observable.of('some string'); 

編輯

關於你的服務的代碼,我woulsd重構你set方法的代碼是這樣的:

set(string) { 
    this.observer.next(string); 
} 

您可以訂閱在您的應用程序的另一部分210中的財產將被通知。

+0

謝謝你展示這個。我想知道如何使'一些字符串'作爲可能改變的變量值。那麼如何將它推入Observable? –

+0

其實你不行。這就是說,當價值改變時你可以觸發事件。爲此,您需要創建一個原始的observable:'Observable.create((observer)=> {observer.next('some string');});'。 'next'方法可以多次調用...注意,你可以將'observer'變量設置爲回調之外的變量。 –

+0

再次感謝您。我在上面添加了一些代碼。 –