我在我的角度项目中使用了外部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'。任何人都可以解释为什么会发生这种情况以及如何解决此问题吗?
答案 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}}