How pass 2 parameters to EventEmitter in Angular?
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});
Another option to strongly type it is as follows:
@Output addModel = new EventEmitter<{make: string, name: string}>();
you can then emit it like @Pankaj-Parkar shows
this.addModel.emit({make, name});
orthis.addModel.emit({make: 'honda', name: 'civic'});
You now have strong typing instead of using object
or any
.
I know this is an old Question for me I would create an interface and send it as an object where I can have my code more organized
export interface addModelArgs{
make:string,
name:string
}
@Output() addModel = new EventEmitter<addModelArgs>();
and call it as following
this.addModel.emit({make: 'honda', name: 'civic'});
or
let savParamters:addModelArgs={make: 'honda', name: 'civic'};
this.addModel.emit(savParamters);
I fixed it by making
EventEmitter<object>();
Then I was able to pass an object such as:
this.MyOutputVariable.emit({ name: 'jack', age: '12' });
And it worked.