2016-02-07 32 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