2015-12-22 51 views
4

如果我有一個像如何在依賴注入的實例上手動收聽角2事件?

@Component({selector: 'todo-cmp'}) 
class TodoCmp { 
    @Input() model; 
    @Output() complete = new EventEmitter(); // TypeScript supports initializing fields 

    onCompletedButton() { 
    this.complete.next(); // this fires an event 
    } 
} 

,並在另一個組件,我得到它的拷貝通過DI作爲一個組件:

... 
class SomeOtherClass(){ 
    constructor(todoCmp:TodoCmp){ 
    // how do I listen to 
    ... 
} 
... 

如何手動添加一個事件監聽器裏「SomeOtherClass」和監聽從ToDoCmp注入實例中的任何點擊事件。

類似todoCmp.addEventListener('complete',function(e){});

也許?或在ng2更好?

TX

肖恩。

回答

7

首先,EventEmitter.next()已經EventEmitter.emit()自alpha-45左右。

其次,你要尋找的方法是.subscribe()

class SomeOtherClass(){ 
    constructor(todoCmp:TodoCmp){ 
    todoCmp.complete.subscribe((result)=>{ 
     //result == arg passed into emit() 
    })) 
} 

請注意,此信息是the docs一應俱全 - 你應該檢查這些出來,作爲EventEmitter比事件監聽器,你更能幹的'已經習慣了。

+0

thx是的我現在只是想出了它的rxjs所以一切都很好,tx爲答案 – born2net

+1

@ born2net如果這回答你的問題,你可以請接受它。 –

+0

對不起,我該如何「接受」呢?我確實將它標記爲+1 ......但我怎樣才能接受它作爲正確答案?有沒有按鈕?我沒有看到它StackEx – born2net