将js脚本从URL导入Angular



我正在用angular构建一个应用程序,但发现了一个我不知道如何解决的问题。我需要导入一个js脚本,它必须从互联网上导入。(因为这些是他们的规则,所以他们可以进行修补程序(问题是,当我将脚本导入到index.html时,我只能在js文件中使用它,而不能在typescript文件中使用。如何使用ts文件中的libary?我无法通过npm安装它,也无法下载文件并将其添加到我的项目文件夹中。图书馆是API的空调(https://developers.airconsole.com/#/api(

感谢您的帮助

它只是添加到您的组件declare var AirConsole中使用它,一个愚蠢的组件

import { Component, VERSION } from '@angular/core';
declare var AirConsole //<--this is the "magic"
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
name = 'Angular ' + VERSION.major;
airConsole=new AirConsole() //<--now you can use airConsole in your component
}

更新好吧,通常我们可以使用服务来管理airConsole,这允许我们所有注入服务的组件都可以使用函数、变量,。。。

免责声明:我不知道"AirConsole";,所以我想控制它就像我们可以控制其他人一样。js,比如Cordova(

正如我们需要Angular知道的那样,当函数在.js中执行时,我们的服务可以像一样

import { Injectable,NgZone } from '@angular/core';
declare var AirConsole;
@Injectable({
providedIn: 'root',
})
export class AirConsoleService implements OnInit {
airConsole=new AirConsole()
message:Subject=new Subject<any>();
constructor(private ngZone: NgZone) { }
ngOnInit(){
this.airconsole.onMessage = (from, data)=>{
this.ngZone.run(() => {
this.message.next({from:from,data:data})
});
})
}
message(device:any,message:any){
this.ngZone.run(() => {
this.airConsole.message(device,message);
});
}
}

因此,例如,您可以订阅airConsoleService.message

最新更新