Как передать 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
.