J'ai dans mon composant un EventEmitter
mais je ne peux pas compiler car je renvoie cette erreur: "Les paramètres fournis ne correspondent à aucune signature d'appel cible"
Mon composant:
@Output() addModel = new EventEmitter<any>();
saveModel($event, make, name) {
this.addModel.emit(make, name);
}
Si je supprime un des paramètres dans this.addModel.emit()
cela fonctionne, mais est-ce que je peux passer 2 paramètres et comment, à mon eventEmitter?
J'ai aussi essayé avec:
@Output() addModel = new EventEmitter<any,any>();
mais ça ne marche pas
Si vous examinez la méthode EventEmitter
de l'API emit
, elle ne peut prendre qu'un seul paramètre de type T
émettre (valeur ?: T)
Etant donné que seul un paramètre est autorisé, envisagez de passer le paramètre comme dans object
dans la méthode emit. De même, dans la méthode ci-dessous, les variables make
& name
conservent leurs valeurs respectives.
this.addModel.emit({make: make, name: name});
//shorthand is below
this.addModel.emit({make, name});
Une autre option pour taper fortement est la suivante:
@Output addModel = new EventEmitter<{make: string, name: string}>();
vous pouvez alors l'émettre comme les spectacles @ Pankaj-Parkar
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
.
Je l'ai réparé en faisant
EventEmitter<object>();
Ensuite, j'ai pu passer un objet tel que:
this.MyOutputVariable.emit({ name: 'jack', age: '12' });
Et ça a fonctionné.
Je sais que c'est une vieille question pour moi je créerais une interface et l'enverrais en tant qu'objet où je pourrais avoir mon code plus organisé
export interface addModelArgs{
make:string,
name:string
}
@Output() addModel = new EventEmitter<addModelArgs>();
et appelez-le comme suit
this.addModel.emit({make: 'honda', name: 'civic'});
or
let savParamters:addModelArgs={make: 'honda', name: 'civic'};
this.addModel.emit(savParamters);