【问题标题】:Angular2 Error - Property 'innerWidth' does not exist on type 'EventTarget'Angular2 错误-“EventTarget”类型上不存在属性“innerWidth”
【发布时间】:2016-09-14 23:55:25
【问题描述】:

在我的 Angular2 应用程序中,我收到以下错误:

 app/src/main.ts(104,42): error TS2339: Property 'innerWidth' does not exist on type 'EventTarget'.

我的组件中有以下方法,编译器不喜欢我的事件对象的innerWidth 属性。

onWindowResize(event: Event):void {
        if (event.target && event.target.innerWidth >= 768) {
            this.showMenu = false;
        }
    }

我需要做些什么来防止/克服这个错误?我认为if (event.target 的第一次检查可以防止这样的崩溃。此外,仅当我为事件参数提供Event 的类型定义时,才会发生错误。任何帮助将不胜感激。

【问题讨论】:

  • 似乎使用event.target[innerWidth] 不会产生这样的错误,但我的代码不再有效?
  • 就我而言,event.target['innerWidth'] 有效(注意innerWidth 周围的引号)
  • 你试过这里的解决方案吗stackoverflow.com/a/42066698/402339

标签: typescript angular


【解决方案1】:

您可以像这样覆盖 Event 类:

interface MyEventTarget extends EventTarget {
    innerWidth: number
}

interface MyEvent extends Event {
    target: MyEventTarget;
}

然后你的代码改为:

onWindowResize(event: MyEvent):void { <== new created class
  if (event.target && event.target.innerWidth >= 768) {
     this.showMenu = false;
  }
}

【讨论】:

    猜你喜欢
    • 2019-01-28
    • 2019-07-20
    • 2021-07-04
    • 2021-10-22
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多