Je ne suis pas sûr que cette question soit liée à Angular 2 ou plus à TypeScript lui-même. Mais de toute façon, j'ai un composant qui émet un objet
<grid" (gridButtonClickEvent)="gridEvent($event)"></grid>
Voici comment j'attrape l'événement
private gridEvent(event) {
console.log(event);
}
Voici le format d'événement de ce que je reçois.
{Key: value}
Donc, fondamentalement, c'est un objet simple. Je veux appeler une fonction avec le nom Key
et passer un value
comme argument, comment est-ce possible? L'objet Key
serait différent, mais je connais toutes les variantes possibles et la fonction déjà enregistrée dans mon composant.
private Key() {}
J'essayais quelque chose comme ça
private gridEvent(event) {
let eventName = Object.keys(event)[0];
window[eventName]();
}
Mais ça dit
window[eventName] is not a function
Essaye ça:
private gridEvent(event) {
let methodName = Object.keys(event)[0];
if(this[methodName]) {
// method exists in the component
let param = event[methodName];
this[methodName](param); // call it
}
}
Une manière plus intuitive serait de construire votre objet émetteur comme:
{ methodName: 'method1', methodParam: someValue }
Puis dans le composant:
private gridEvent(event) {
let methodName = event.methodName;
if(this[methodName]) {
// method exists on the component
let param = event.methodParam;
this[methodName](param); // call it
}
}