如何从外部javascript文件调用角度组件编写的函数?

如何从外部javascript文件调用角度组件编写的函数?,javascript,angular,Javascript,Angular,我已经编写了一个外部JavaScript文件,用于在页面上创建动态UI。我需要在单击“动态创建”按钮时调用在组件类中编写的函数。从技术上讲,我试图从纯JavaScript文件调用函数。任何帮助都将不胜感激 以下是一个例子: 假设my Home.Component.ts文件有一个函数'showtoos()' 我的custom.js文件包含查找单击事件的代码,如下所示: btn.onClick() { //I want to call showToast() function from

我已经编写了一个外部JavaScript文件,用于在页面上创建动态UI。我需要在单击“动态创建”按钮时调用在组件类中编写的函数。从技术上讲,我试图从纯JavaScript文件调用函数。任何帮助都将不胜感激

以下是一个例子:

假设my Home.Component.ts文件有一个函数'showtoos()'

我的custom.js文件包含查找单击事件的代码,如下所示:

btn.onClick() {

     //I want to call showToast() function from here.
}
  • 创建CND包
  • 将包作为脚本文件插入index.html中
  • 使用服务文件
示例代码:

import { Injectable } from '@angular/core';
declare var CryptoJS: any;
export class CryptService {

  constructor() { }

  public decrypt(encryptedString, random) {
    return new Promise((result, reject) => {
      const bytes = CryptoJS.AES.decrypt(encryptedString, random);
      result(bytes.toString(CryptoJS.enc.Utf8));
    });
  }

  public encrypt (payload, user_id) {
    return CryptoJS.AES.encrypt(payload, user_id).toString();
  }

}
模块1.ts

this.load('https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js');

  load(scriptUrl: string) {
    if (isPlatformBrowser(this.platformId)) {
      let node: any = document.createElement('script');
      node.src = scriptUrl;
      node.type = 'text/javascript';
      node.async = true;
      node.charset = 'utf-8';
      document.getElementsByTagName('head')[0].appendChild(node);
    }
  }

这回答了你的问题吗?不,它不是,因为NgZone在GitHub上有一个未解决的问题。
this.load('https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js');

  load(scriptUrl: string) {
    if (isPlatformBrowser(this.platformId)) {
      let node: any = document.createElement('script');
      node.src = scriptUrl;
      node.type = 'text/javascript';
      node.async = true;
      node.charset = 'utf-8';
      document.getElementsByTagName('head')[0].appendChild(node);
    }
  }