Comment passer 2 paramètres à EventEmitter angular2

j'ai dans mon composant EventEmitter mais je ne peux pas compiler car retourner cette erreur: "Les paramètres fournis ne correspondent à aucune signature de la cible d'appel"

Mon composant:

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

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

Si je supprime l'un des paramètres this.addModel.emit() cela fonctionne, mais alors, Puis-je passer 2 paramètres et comment, à mon eventEmitter?

j'ai essayé aussi avec :

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

mais Ça ne fonctionne pas

32
demandé sur Dhyey 2016-12-06 22:49:54

3 réponses

si vous regardez EventEmitter API emit méthode, il ne peut prendre seul paramètre de type T

emit(valeur?: T)

puisque seul le paramètre simple est autorisé, considérez passer le paramètre comme dans object dans émettent de la méthode. De même dans la méthode ci-dessous make& name les variables tiennent leurs valeurs respectives.

this.addModel.emit({make: make, name: name});
//shorthand is below
this.addModel.emit({make, name});
73
répondu Pankaj Parkar 2018-01-15 05:55:29

Je l'ai réparé en faisant

EventEmitter<object>();

alors j'ai pu passer un objet tel que:

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

Et ça a fonctionné.

9
répondu Adham Amiin 2018-02-15 11:31:42

une autre option pour le taper fortement est la suivante:

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

vous pouvez alors l'émettre comme @Pankaj-Parkar montre

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

ou

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

vous avez maintenant une frappe forte au lieu d'utiliser object ou any.

1
répondu Andy Danger Gagne 2018-08-27 19:42:15