我正在使用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的代码?
答案 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));
}
它对我很好。