How pass 2 parameters to EventEmitter angular2

前端 未结 4 554
慢半拍i
慢半拍i 2020-12-14 05:35

I have in my component an EventEmitter but I can\'t compile it because it return the error: Supplied parameters do not match any signature of call target<

相关标签:
4条回答
  • 2020-12-14 05:54

    If you look at the EventEmitter API's emit method, it can only take single parameter of type T

    emit(value?: T)

    Since only single parameter is allowed, consider passing parameter as in object in emit method. Likewise in below method make & name variable are holding their respective values.

    this.addModel.emit({make: make, name: name});
    //shorthand is below
    this.addModel.emit({make, name});
    
    0 讨论(0)
  • 2020-12-14 05:55

    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);
    
    0 讨论(0)
  • 2020-12-14 05:57

    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.

    0 讨论(0)
  • 2020-12-14 06:00

    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});
    or
    this.addModel.emit({make: 'honda', name: 'civic'});

    You now have strong typing instead of using object or any.

    0 讨论(0)
提交回复
热议问题