Подтвердить что ты не робот

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

У меня в моем компоненте 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>();

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

4b9b3361

Ответ 1

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

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

Поскольку разрешен только один параметр, рассмотрите прохождение параметра как в object в методе emit. Аналогично в нижеописанном методе make и переменная name сохраняют свои соответствующие значения.

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

Ответ 2

Я исправил это, сделав

EventEmitter<object>();

Затем я смог передать объект, например:

this.MyOutputVariable.emit({ name: 'jack', age: '12' });

И это сработало.

Ответ 3

Другим вариантом его сильного типа является следующее:

@Output addModel = new EventEmitter<{make: string, name: string}>();

вы можете испустить его, как @Pankaj-Parkar показывает

this.addModel.emit({make, name});
или же
this.addModel.emit({make: 'honda', name: 'civic'});

Теперь у вас есть сильная типизация вместо использования object или any.

Ответ 4

Я знаю, что это старый вопрос для меня. Я бы создал интерфейс и отправил его как объект, где я мог бы сделать свой код более организованным.

 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);