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);