dispatchEvent导致错误无法在'EventTarget'上执行'dispatchEvent':参数1不是'Event'类型

时间:2017-01-29 11:15:52

标签: javascript angular typescript

我正在使用Angular2 + TypeScript,当我尝试执行此代码时:

var event = new Event('check');
window.dispatchEvent(event);

此代码导致下一个错误:

  

无法在'EventTarget'上执行'dispatchEvent':参数1不是'Event'类型。

我已尝试过所有内容,并发现这样可行:

var event = new CustomEvent('check');

问题是任何IE都不支持CustomEvent。

另一件有用的事情是:

var event = new Event('CustomEvent');
event.initCustomEvent('check');

问题是不推荐使用InitCustomEvent。

我能做些什么来避免这种类型错误吗?也许在打字稿的某个地方做个例外?或者使用任何未弃用且适用于IE Edge的代码?

2 个答案:

答案 0 :(得分:3)

找到解决方案。

对于某些TypeScript设置,新事件 类型为'事件'只有当我们插入第二个参数时,例如:

var event = new Event("check", { bubbles: true, cancelable: false });
window.dispatchEvent(event);

答案 1 :(得分:0)

我在StackOverFlow中找到了另一个答案。

链接:https://stackoverflow.com/a/37687099/6264260

if (event && event.originalEvent) {
    var oe = event.originalEvent;
    this.dispatchEvent(new oe.constructor(oe.type, oe));
}

它对我很好。