Angular 如何以角度向EventEmitter传递2个参数?

Angular 如何以角度向EventEmitter传递2个参数?,angular,eventemitter,Angular,Eventemitter,我的组件中有一个EventEmitter,但我无法编译它,因为它会抛出错误: 提供的参数与调用目标的任何签名都不匹配 我的组成部分: @Output()addModel=neweventemitter(); saveModel($event、make、name){ this.addModel.emit(make,name); } 如果我删除this.addModel.emit()中的一个参数,它可以工作,但是否可以将两个参数传递给EventEmitter以及如何传递?如果查看,它只能接受一个T

我的组件中有一个
EventEmitter
,但我无法编译它,因为它会抛出错误:

提供的参数与调用目标的任何签名都不匹配

我的组成部分:

@Output()addModel=neweventemitter();
saveModel($event、make、name){
this.addModel.emit(make,name);
}
如果我删除
this.addModel.emit()
中的一个参数,它可以工作,但是否可以将两个参数传递给
EventEmitter
以及如何传递?

如果查看,它只能接受一个
T
类型的参数

发射(值?:T)

仅允许一个参数,请考虑将其作为<代码>对象<代码> > <代码> EMIT> <代码>方法> < /P> 在下面的代码段中,

make
&
name
变量保存着各自的值:

this.addModel.emit({make:make,name:name});
//速记在下面
emit({make,name});
我通过制作

EventEmitter<object>();

它成功了。

另一个强输入选项如下:

@Output addModel=new EventEmitter()

然后你可以像@Pankaj Parkar shows那样发射它

this.addModel.emit({make,name})

this.addModel.emit({make:'honda',name:'civic'})


你现在有了强大的打字功能,而不是使用
object
any

我知道这是一个老问题 对我来说,我会创建一个接口,并将其作为一个对象发送,这样我可以使代码更有条理

 export interface addModelArgs{
      make:string,
      name:string
    }
@Output() addModel = new EventEmitter<addModelArgs>();

哦,好的,谢谢!它将使用this.addModel.emit({make:make,name:name})@echonax不需要这样做,es6会处理它。我如何在父组件中观察/获取该值?@roshini请看看是如何发生的,基本上您需要使用
EventEmitter
object将数据从子组件发送到父组件。感谢您的回复,我知道这个发射器在组件之间,但在将数据从指令传递到组件时需要交互。这很好,Adham。没有什么不符合您的答案,但值得注意的是,一个标准实践——也是一个良好实践——是始终提供一个事件对象和一个或多个值:
publish(Event,value)
&
subscribe(e,value){…}
。我有点惊讶Angular这样定义/实现了他们的接口
 export interface addModelArgs{
      make:string,
      name:string
    }
@Output() addModel = new EventEmitter<addModelArgs>();
    this.addModel.emit({make: 'honda', name: 'civic'});
or 
    let savParamters:addModelArgs={make: 'honda', name: 'civic'};

    this.addModel.emit(savParamters);