如何通过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});
答
我固定它通过使
EventEmitter<object>();
然后我就能够传递一个对象,如:
this.MyOutputVariable.emit({ name: 'jack', age: '12' });
和它的工作。
+0
这很好,阿德姆。没有什么反对你的回答,但值得注意的是,一个标准的做法 - 一个好的做法 - 总是提供一个*事件对象与一个或多个值相结合*:'publish(event,value)'&'subscribe (e,value){...}'。我有点惊讶Angular定义了他们的界面/按照他们的方式实现了它。 – Cody
哦,好的,谢谢!它将this.addModel.emit({make:make,name:name}); – LorenzoBerti
@echonax不需要这样做,es6会照顾它[在这里检查](http://www.benmvp.com/learning-es6-enhanced-object-literals/) –
好的!谢谢!! :) – LorenzoBerti