如何在angular2上声明一个observable

时间:2016-02-07 17:09:37

标签: typescript angular


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

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

我尝试的一切都给我一个错误


我想使用它,因为我有一个经常更改的对象数组,并且在模板中ngFor不会更改值。 有什么帮助吗?

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

2 个答案:

答案 0 :(得分:4)

@pixelbits提供了一个很好的答案,描述了使用原始可观察量的方法。

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

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

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

当然,您可以利用事件在列表中添加元素,但我不确定它是您的用例:

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

这对于基于事件的工具/技术(如WebSockets,Firebase等)特别有用。上面的可观察对象将与它们相关联。这个答案可以为您提供有关如何使用Firebase实现此功能的更多详细信息:

答案 1 :(得分:2)

如果要创建Observable(冷),可以使用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);
}