Angular 6 - запуск метода javascript вне приложения - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть угловое приложение, которое будет встроено в другое приложение.Это приложение внедряет javascript в браузер для предоставления определенных функций угловому приложению.

Например, когда я запускаю свое угловое приложение внутри упомянутого приложения, если я иду в веб-консоль, я могу выполнитьследующий метод js

API.callService("Special Service");

и отлично работает.

Как я могу выполнить то же самое в угловом приложении?

я попробовал следующее в компоненте

declare var API: any;

, а затем в методе ngAfterViewInit ()

API.callService("Special Service");

, но я получаю сообщение об ошибке, поскольку API не определен.

В качестве дополнительной информации я могу использовать инструменты Chrome длябраузер для встраивания.Если я хочу запустить метод javascript, я просто делаю ..

enter image description here

И это прекрасно работает!Проблема заключается в том, чтобы сделать тот же вызов из компонента Angular.

This is what i see when calling from the component Есть идеи, как это решить?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Надеюсь, это поможет вам

declare var API: any;

Вы говорите API как любое значение, поэтому вы получаете неопределенное значение;

Попробуйте свой конструктор или ngAfterViewInit

this.API = API.callService("Special Service");
0 голосов
/ 23 ноября 2018

Все,

Я обнаружил проблему

Несмотря на то, что я вызывал API в ngAfterViewInit, кажется, что API был недоступен.

iпробовал с

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

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

}

и отлично работает !!

Спасибо !!

0 голосов
/ 22 ноября 2018

Вам нужно экспортировать свои функции javascript, затем они могут потребоваться в вашем угловом модуле.

Конечно, вам нужно иметь возможность или иметь право изменять исходный файл javascript, чтобы добавитьмодуль экспортирует объявления.

Чтобы использовать функцию 'require' в угловом компоненте, вам нужно выполнить:

$ npm install @types/node

Затем в tsconfig.json,под свойством "typeRoots" добавьте:

"types": ["node"],

Вот краткий пример: https://stackblitz.com/edit/angular-qphccu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...