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
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});
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é.
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});
outhis.addModel.emit({make: 'honda', name: 'civic'});
vous avez maintenant une frappe forte au lieu d'utiliser object
ou any
.