2016-02-07 38 views
0


如何声明observable以及如何在angular2中向其添加数据? 我有5个小时试图找出如何做到这一点。
我tryed这如何在angular2上声明observable

this.products : Observable<array>; 
var object = {"item":item}; 
this.products.subscribe(object) 

一切我tryed引发我一个错误


我想使用它,因为我有一个经常和模板ngFor没有改变改变对象的数组价值。 有什么帮助吗?

http://pastebin.com/1cFXJHHk 这是我尝试做

+0

我建议提供证明这一问题的plnkr。不清楚,否则,问题可能是什么。 – pixelbits

+0

我提供了一个pastebin ..我确定你什么时候会看到它,你会得到正确的答案。 –

+0

根据你的pastebin,我不认为你需要使用Observables(除了Http)。你可以做所有你需要的东西来单独使用'@ Input'绑定(也可能是'@ Output'绑定)。它仍然不清楚如何或为什么你想使用Observables。 – pixelbits

回答

2

@pixelbits提供描述一个伟大的答案使用原始可观察量的方式。

但我想你误解了什么是可观察和反应式编程。你可以看看这个伟大的介绍开始:

obersables的subscribe方法允许注册通知回调:

  • 关于事件回调的第一个参数
  • 第二个回调有关错误
  • 最后一个完成

当然你也可以利用事件列表中添加的元素,但我不知道它是你的使用情况:

var someList = []; 
let observable = (...) 
observable.subscribe(data => { 
    someList.push(data); 
}); 

这是特别对基于事件的工具/技术(如WebSockets,Firebase,...)非常有用。上面的观察结果将与它们相关联。这个答案可以给你如何与火力地堡实施更多细节:

1

如果你想创建一个可观察(冷),你可以使用create方法:

myEvent:Rx.Observable<{item:Item}>; 
myObserver: Rx.Observer<{item:Item}>; 
constructor() { 
    this.myEvent = Rx.Observable.create(o=>this.myObserver = o); 
} 
someEvent() { 
    // do something 
    var $event = {item:new Item()}; 

    // emit the event object when something interesting happens 
    if(this.myObserver) 
     this.myObserver.emit($event); 
} 
+0

这看起来很复杂。它对ng的作用对于经常变化的observable而言? –

+0

这就是为什么我需要它 –

+0

我猜是否使用Observable取决于您的用例。您可以在组件内部使用EventEmitter,如果我记得它与ReplaySubject类似。 – pixelbits