How pass 2 parameters to EventEmitter in Angular?

LorenzoBerti picture LorenzoBerti · Dec 6, 2016 · Viewed 100.1k times · Source

I have in my component an EventEmitter but I can't compile it because it throws the error:

Supplied parameters do not match any signature of call target

My component:

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

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

If I delete one of the parameters in this.addModel.emit() it works but is it possible to pass 2 parameters to EventEmitter and how?

Answer

Pankaj Parkar picture Pankaj Parkar · Dec 6, 2016

If you look at the EventEmitter emit method @ angular.io, it can only take a single parameter of type T

emit(value?: T)

Since only a single parameter is allowed, consider passing it as an object in emit method.

In the snippet below, make & name variables are holding their respective values:

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