2016-05-18 30 views
1

在我Angular2的應用程序不存在我得到以下錯誤:Angular2錯誤 - 物業「innerWidth」上鍵入「事件目標」

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。任何幫助,將不勝感激。

+0

它似乎使用'event.target [innerWidth]'不產生這樣的錯誤但我的代碼不再有效? –

+0

在我的情況下,event.target ['innerWidth']的作品(注意innerWidth周圍的引號) –

+0

您是否嘗試過這裏的解決方案https://stackoverflow.com/a/42066698/402339 – gerl

回答

2

您可以覆蓋事件類是這樣的:

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; 
    } 
} 
+0

這不適合我。你有想過嗎? – dan

+0

我得到MyEvent錯誤地擴展事件 – dan