如何通过2个参数EventEmitter angular2

问题描述:

我有我的分量EventEmitter但我不能编译,因为这个错误: “提供的参数不匹配,通话对象的任何签名”如何通过2个参数EventEmitter angular2

我的组件:

@Output() addModel = new EventEmitter<any>(); 

saveModel($event, make, name) { 
    this.addModel.emit(make, name); 
} 

如果我删除this.addModel.emit()中的一个参数,但是可以,我可以传递2个参数以及如何传递给我的eventEmitter?

我也试图与:

@Output() addModel = new EventEmitter<any,any>(); 

,但它不工作

如果你看一下EventEmitter API的emit方法,就只能采取类型的单一参数T

emit(value?: T)

由于只允许单个参数,因此可以考虑在发射方法中传递参数object。同样在下面的方法make & name变量保持其各自的值。

this.addModel.emit({make: make, name: name}); 
//shorthand is below 
this.addModel.emit({make, name}); 
+1

哦,好的,谢谢!它将this.addModel.emit({make:make,name:name}); – LorenzoBerti

+2

@echonax不需要这样做,es6会照顾它[在这里检查](http://www.benmvp.com/learning-es6-enhanced-object-literals/) –

+0

好的!谢谢!! :) – LorenzoBerti

我固定它通过使

EventEmitter<object>(); 

然后我就能够传递一个对象,如:

this.MyOutputVariable.emit({ name: 'jack', age: '12' }); 

和它的工作。

+0

这很好,阿德姆。没有什么反对你的回答,但值得注意的是,一个标准的做法 - 一个好的做法 - 总是提供一个*事件对象与一个或多个值相结合*:'publish(event,value)'&'subscribe (e,value){...}'。我有点惊讶Angular定义了他们的界面/按照他们的方式实现了它。 – Cody