Lun*_*man 13 function eventemitter typescript angular
我不确定与Typeular本身有关的Angular 2或更多问题.但无论如何,我有一个发射对象的组件
<grid" (gridButtonClickEvent)="gridEvent($event)"></grid>
Run Code Online (Sandbox Code Playgroud)
以下是我如何捕捉这一事件
private gridEvent(event) {
console.log(event);
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的事件格式.
{Key: value}
Run Code Online (Sandbox Code Playgroud)
所以基本上它是一个简单的对象.我想用名称调用一个函数Key并传递一个value参数,它怎么可能?对象Key会有所不同,但我知道我的组件中所有可能的变体和已注册的函数.
private Key() {}
Run Code Online (Sandbox Code Playgroud)
我正在尝试这样的事情
private gridEvent(event) {
let eventName = Object.keys(event)[0];
window[eventName]();
}
Run Code Online (Sandbox Code Playgroud)
但它说
window[eventName] is not a function
Run Code Online (Sandbox Code Playgroud)
Sei*_*vic 32
试试这个:
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
}
}
Run Code Online (Sandbox Code Playgroud)
更直观的方法是将发射对象构造为:
{ methodName: 'method1', methodParam: someValue }
Run Code Online (Sandbox Code Playgroud)
然后在组件中:
private gridEvent(event) {
let methodName = event.methodName;
if(this[methodName]) {
// method exists on the component
let param = event.methodParam;
this[methodName](param); // call it
}
}
Run Code Online (Sandbox Code Playgroud)