Angular 6-在应用外部运行javascript方法

时间:2018-11-22 16:59:59

标签: javascript angular

我有一个Angle 6应用程序,它将被嵌入另一个应用程序中。该应用程序将javascript注入浏览器,以便向angular应用程序公开某些功能。

例如,当我在提到的应用程序中运行我的角度应用程序时,如果我转到Web控制台,则可以执行以下js方法

API.callService("Special Service");

工作正常。

我该如何在角度应用程序中执行相同的操作?

我在组件中尝试了以下内容

declare var API: any;

然后使用ngAfterViewInit()方法

API.callService("Special Service");

但由于未定义API我收到错误消息。

作为其他信息,我可以将chrome dev工具用于嵌入式浏览器。如果我想运行javascript方法,我就这样做。

enter image description here

那很好!问题是要从Angular组件进行相同的调用。

This is what i see when calling from the component 知道如何解决吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

希望对您有帮助

declare var API: any;

您说的是API的任何值,因此您未定义;

尝试使用您的构造函数或ngAfterViewInit

this.API = API.callService("Special Service");

答案 1 :(得分:0)

您需要导出javascript函数,然后可以在angular模块中要求它们。

当然,您需要能够或有权修改原始javascript文件以添加模块导出声明。

要在角度组件中使用“ require”功能,您需要运行:

$ npm install @types/node

然后在tsconfig.json中的“ typeRoots”属性下,添加:

"types": ["node"],

这里是一个简单的示例:https://stackblitz.com/edit/angular-qphccu

答案 2 :(得分:0)

全部

我发现了问题

尽管我在ngAfterViewInit中调用api,但该api似乎不可用。

我尝试过

setTimeout(()=> this.click(),1000);

 click(){
var result = SrwOSGiApi.callOSGIService("com.sabre.edge.platform.core.sso.base.IAgentProfileService","getPcc", null);

}

工作正常!

谢谢!