Как передать 2 параметра в EventEmitter angular2

у меня в моем компоненте a EventEmitter но я не могу скомпилировать, потому что возвращать эту ошибку: "Поставляемые параметры не соответствуют какой-либо сигнатуре цели вызова"

мой компонент:

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

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

если я удалю один из параметров this.addModel.emit() это работает, но так, Могу ли я передать 2 параметра и как, моему eventEmitter?

я попробовал также с:

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

но это не работает

3 ответов


если вы посмотрите на EventEmitter в API emit метод, он может принимать только один параметр типа T

emit (значение?: T)

поскольку разрешен только один параметр, рассмотрите возможность передачи параметра как в object в метода emit. Аналогично в ниже метод 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.