TypeScript自体にAngular 2以上に関連する質問かどうかはわかりませんが、とにかく、オブジェクトを放出するコンポーネントがあります
<grid" (gridButtonClickEvent)="gridEvent($event)"></grid>
イベントをキャッチする方法は次のとおりです
private gridEvent(event) {
console.log(event);
}
これが私が得ているもののイベント形式です。
{Key: value}
したがって、基本的には単純なオブジェクトです。 Key
という名前の関数を呼び出して、value
を引数として渡したいのですが、どうすれば可能ですか?オブジェクトKey
は異なりますが、考えられるすべてのバリアントと、コンポーネントに既に登録されている関数を知っています。
private Key() {}
私はこのようなことを試みていました
private gridEvent(event) {
let eventName = Object.keys(event)[0];
window[eventName]();
}
しかし、それは言います
window[eventName] is not a function
これを試して:
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
}
}
より直感的な方法は、放出オブジェクトを次のように構築することです。
{ methodName: 'method1', methodParam: someValue }
次に、コンポーネントで:
private gridEvent(event) {
let methodName = event.methodName;
if(this[methodName]) {
// method exists on the component
let param = event.methodParam;
this[methodName](param); // call it
}
}