TS2339:'HTMLElement'类型中不存在属性'on'

Ani*_*tap 3 typescript plotly angular

我正在使用角度为2的绘图代码.我在下面的代码时遇到错误.我提到了这段代码.

我的代码是:

var plotDiv = document.getElementById('myDiv');
plotDiv.on('plotly_relayout',
    function(eventdata){
      alert( 'ZOOM!' + '\n\n' +
        'Event data:' + '\n' +
        JSON.stringify(eventdata) + '\n\n' +
        'x-axis start:' + new Date(eventdata['xaxis.range[0]'])+ '\n' +
        'x-axis end:' + new Date(eventdata['xaxis.range[1]']));
      var xVal = new Date(eventdata['xaxis.range[0]']);
      var yVal = new Date(eventdata['xaxis.range[1]']);
    }
  );
Run Code Online (Sandbox Code Playgroud)

我收到了plotDiv.on('....')函数的错误.在角度2中是否有.on()的替代功能?请帮我.我卡在这里

yur*_*zui 9

要防止此错误,您可以编写:

var plotDiv: any = document.getElementById('myDiv');
plotDiv.on('plotly_relayout', ...
Run Code Online (Sandbox Code Playgroud)

document.getElementById('myDiv')回来HTMLElement.此类型不包含方法,on因为此方法已添加到其中plotly-latest.min.js.因此,为了使打字稿警告静音,您可以明确表示编译不检查类型plotDiv

Plunker示例

另一种方法是创建类型定义,如:

interface PlotHTMLElement extends HTMLElement  {
  on(eventName: string, handler: Function): void;
}

var plotDiv  = <PlotHTMLElement>document.getElementById('myDiv')
plotDiv.on('plotly_relayout', function() {

});
Run Code Online (Sandbox Code Playgroud)