首页 文章

如何将2个参数传递给EventEmitter angular2

提问于
浏览
43

我在我的组件中有 EventEmitter 但我无法编译因为返回此错误:"Supplied parameters do not match any signature of call target"

我的组件:

@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 回答

  • 3

    强类型的另一种选择如下:

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

    你可以像@ Pankaj-Parkar节目一样发出它

    this.addModel.emit({make, name});
    要么
    this.addModel.emit({make: 'honda', name: 'civic'});

    您现在拥有强大的输入,而不是使用 objectany .

  • 88

    如果您查看 EventEmitter API的 emit 方法,它只能采用 T 类型的单个参数

    emit(值?:T)

    由于只允许单个参数,因此请考虑在emit方法中传递 object 中的参数 . 同样在下面的方法 makename 变量保持其各自的值 .

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

    我通过制作来修复它

    EventEmitter<object>();
    

    然后我能够传递一个对象,例如:

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

    它奏效了 .

相关问题