如何在 Angular 中将 2 个参数传递给 EventEmitter?
How pass 2 parameters to EventEmitter in Angular?
我的组件中有一个 EventEmitter
但我无法编译它,因为它会抛出错误:
Supplied parameters do not match any signature of call target
我的组件:
@Output() addModel = new EventEmitter<any>();
saveModel($event, make, name) {
this.addModel.emit(make, name);
}
如果我删除 this.addModel.emit()
中的一个参数,它可以工作,但是是否可以将 2 个参数传递给 EventEmitter
以及如何传递?
如果你看一下EventEmitter emit method @ angular.io,它只能接受一个T
类型的参数
emit(value?: T)
由于只允许使用一个参数,请考虑在 emit
方法中将其作为 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' });
成功了。
强类型的另一种选择如下:
@Output addModel = new EventEmitter<{make: string, name: string}>();
然后你可以像@Pankaj-Parkar 展示的那样发出它
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: 'honda', name: 'civic'});
or
let savParamters:addModelArgs={make: 'honda', name: 'civic'};
this.addModel.emit(savParamters);
我的组件中有一个 EventEmitter
但我无法编译它,因为它会抛出错误:
Supplied parameters do not match any signature of call target
我的组件:
@Output() addModel = new EventEmitter<any>();
saveModel($event, make, name) {
this.addModel.emit(make, name);
}
如果我删除 this.addModel.emit()
中的一个参数,它可以工作,但是是否可以将 2 个参数传递给 EventEmitter
以及如何传递?
如果你看一下EventEmitter emit method @ angular.io,它只能接受一个T
emit(value?: T)
由于只允许使用一个参数,请考虑在 emit
方法中将其作为 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' });
成功了。
强类型的另一种选择如下:
@Output addModel = new EventEmitter<{make: string, name: string}>();
然后你可以像@Pankaj-Parkar 展示的那样发出它
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: 'honda', name: 'civic'});
or
let savParamters:addModelArgs={make: 'honda', name: 'civic'};
this.addModel.emit(savParamters);