2016-02-22 68 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

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