如何在依赖注入的实例上手动监听Angular 2事件?

6
如果我有一个组件,如下所示:

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

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

在另一个组件中,我通过依赖注入获取其副本,如下所示:

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

如何在“SomeOtherClass”中手动添加事件侦听器,并监听从ToDoCmp的依赖注入实例触发的任何单击事件。

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

也许?还是在ng2中有更好的方法?

谢谢

肖恩。

1个回答

9

首先,自 alpha-45 版本开始,EventEmitter.next() 已经被改成了 EventEmitter.emit()

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

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

请注意,在文档中已经有这些信息 - 您应该查看文档,因为 EventEmitter 比您习惯的事件侦听器功能更强大。

谢谢,是的,我现在才明白它是rxjs,所以一切都好了,感谢你的回答。 - born2net
1
@born2net 如果这个回答解决了你的问题,你可以请接受它。 - Günter Zöchbauer
抱歉,请问如何“接受”它?我已经标记了+1… 但是如何将其接受为正确答案?有相应的按钮吗?我没有在 StackEx 上看到它。 - born2net

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接