无法访问Angula2组件内的JavaScript函数

时间:2017-06-20 04:39:10

标签: angular typescript

在我的Angular应用程序中,即使导入js文件并在组件内声明变量,我也无法访问组件中的第三方JavaScript函数。

以下是我的代码

 import 'mxgraph-js/dist/mxgraph-js.js';

 declare var mx: any;
 declare var mxEvent: any;
 declare var mxGraph: any;
 declare var mxRubberband: any;


EXCEPTION: Uncaught (in promise): Error: Error in :0:0 caused by: mx is not defined
Module1Component@http://localhost:8080/f31627203470d3f88f30.3.chunk.js:694:10
Wrapper_Module1Component@/Module1Module/Module1Component/wrapper.ngfactory.js:5:18
anonymous/View_Module1Component_Host0.prototype.createInternal@/Module1Module/Module1Component/host.ngfactory.js:13:32
AppView</AppView.prototype.createHostView@http://localhost:8080/app.js:12320:21
DebugAppView</DebugAppView.prototype.createHostView@http://localhost:8080/app.js:12719:25
ComponentFactory</ComponentFactory.prototype.create@http://localhost:8080/app.js:7294:21
ViewContainerRef_</ViewContainerRef_.prototype.createComponent@http://localhost:8080/app.js:9591:50
RouterOutlet</RouterOutlet.prototype.activate@http://localhost:8080/app.js:57517:29
ActivateRoutes</ActivateRoutes.prototype.placeComponentIntoOutlet@http://localhost:8080/app.js:56827:12
ActivateRoutes</ActivateRoutes.prototype.activateRoutes@http://localhost:8080/app.js:5679

但是当我在index.html中加载相同的js文件时,一切正常。我在很多情况下都面临着这个问题。

1 个答案:

答案 0 :(得分:0)

鉴于您已安装mxgraph-js包,您必须将其导入为:

import * as mx from 'mxgraph-js';

// and use it like
console.log(mx)
console.log(mx.mxEvent);

如果您noImplicitAnytsconfig.json设置为true,则必须为mxgraph-js声明一个定义,因为mxgraph-js似乎没有任何类型}。

这样的事情:

// mxgraph.d.ts

declare module "mxgraph-js" {
    var mx: any;
    export = mx;
}