如何在Angular组件中实现外部脚本文件?

时间:2018-08-14 01:08:49

标签: angular api components

我在我的角度项目中使用了外部api。当我使用普通的HTML / Javascript文件时,我要做的就是:

<script src="http://api.eventful.com/js/api"></script>
<script>

EVDB.API.call("/events/get", argument, function(oData) {
      alert("your myObject is " + JSON.stringify(oData) );
    });}
</script>

获取我想要的数据。 所以在我的组件typecipt文件中,我有:

myFunc(argument) {
  EVDB.API.call('/events/search', argument, function(oData) {
    alert('your myObject is ' + JSON.stringify(oData));
  });
}

我在index.html中添加了<script src="http://api.eventful.com/js/api"></script>,并在angular.json文件中的脚本数组下添加了“ http://api.eventful.com/js/api”。

尽管如此,我仍然不断收到错误消息,提示“未定义标识符'EVDB'。任何人都可以解释为什么会发生这种情况以及如何解决此问题吗?

2 个答案:

答案 0 :(得分:0)

您不需要将其添加到angular.json和index.html中。 Angular.json仅适用于要包含的本地脚本,不适用于您的情况。 我假设脚本正在定义一个名为EVDB的全局变量。要在typescript类中使用它,您需要声明它:

declare var EVDB;

...应该可以解决问题。

还要确保脚本所包含的内容在HTML的主要<client-app>入口点上方。

答案 1 :(得分:0)

只需将<script src="http://api.eventful.com/js/api"></script>添加到index.html。

在您使用过declare var EVDB:any;对象的每个位置添加EVDB,但是如果您在整个项目中使用过global.d.ts,则在src文件夹中创建declare var EVDB:any;并将语句EVDB添加到这样EVDB对象的文件将在整个项目中可用。

最好添加有关interface RestApi { call:(url:string,args:any,callback:(args?:any)=> void) => void } interface EVDBType { api:RestApi } declare var EVDB :EVDBType; 这样的对象类型的额外信息

{{1}}