angular TinyMCE 集成

angular TinyMCE integration

我按照官方文档将 TinyMCEAngular 集成:https://www.tinymce.com/docs/integrations/angular2/.

现在一切正常,但 TinyMCEs 插件加载到应用程序启动,但我希望它从 /src/assets/tinymce 异步加载。问题是,

How can I load TinyMCE asynchronously when I need it?

~语法错误请见谅

.angular-cli.json 我有 scripts 数组:

      "scripts": [
        "../node_modules/tinymce/tinymce.js",
        "../node_modules/tinymce/themes/modern/theme.js",
        "../node_modules/tinymce/plugins/link/plugin.js",
        "../node_modules/tinymce/plugins/paste/plugin.js",
        "../node_modules/tinymce/plugins/table/plugin.js",
        "../node_modules/tinymce/plugins/image/plugin.js",
        "../node_modules/tinymce/plugins/imagepicker/plugin.js",
        "../node_modules/tinymce/plugins/imagetools/plugin.js",
        "../node_modules/tinymce/plugins/advlist/plugin.js",
        "../node_modules/tinymce/plugins/autolink/plugin.js",
        "../node_modules/tinymce/plugins/lists/plugin.js",
        "../node_modules/tinymce/plugins/charmap/plugin.js",
        "../node_modules/tinymce/plugins/print/plugin.js",
        "../node_modules/tinymce/plugins/preview/plugin.js",
        "../node_modules/tinymce/plugins/hr/plugin.js",
        "../node_modules/tinymce/plugins/anchor/plugin.js",
        "../node_modules/tinymce/plugins/pagebreak/plugin.js",
        "../node_modules/tinymce/plugins/searchreplace/plugin.js",
        "../node_modules/tinymce/plugins/wordcount/plugin.js",
        "../node_modules/tinymce/plugins/visualblocks/plugin.js",
        "../node_modules/tinymce/plugins/visualchars/plugin.js",
        "../node_modules/tinymce/plugins/fullscreen/plugin.js",
        "../node_modules/tinymce/plugins/insertdatetime/plugin.js",
        "../node_modules/tinymce/plugins/media/plugin.js",
        "../node_modules/tinymce/plugins/nonbreaking/plugin.js",
        "../node_modules/tinymce/plugins/save/plugin.js",
        "../node_modules/tinymce/plugins/contextmenu/plugin.js",
        "../node_modules/tinymce/plugins/directionality/plugin.js",
        "../node_modules/tinymce/plugins/template/plugin.js",
        "../node_modules/tinymce/plugins/textcolor/plugin.js",
        "../node_modules/tinymce/plugins/colorpicker/plugin.js",
        "../node_modules/tinymce/plugins/textpattern/plugin.js",
        "../node_modules/tinymce/plugins/toc/plugin.js",
        "../node_modules/tinymce/plugins/code/plugin.js",
        "../node_modules/tinymce/plugins/autoresize/plugin.js",
        "../node_modules/tinymce/plugins/help/plugin.js"
      ],

这些脚本是 TinyMCE

的插件

在组件的顶部声明这两个:

declare var tinymce: any;
const url = '//cdn.tinymce.com/4/tinymce.min.js';

使用此函数在组件的 onInit 函数中加载脚本:

loadScript() {
    let scriptTag = document.querySelector('script[src="//cdn.tinymce.com/4/tinymce.min.js"]');
    let node;
    if (!scriptTag) {
      node = document.createElement('script');
      node.src = url;
      node.type = 'text/javascript';
      node.async = true;
      node.charset = 'utf-8';
      document.getElementsByTagName('head')[0].appendChild(node);
    }
  }

然后使用以下函数加载tinymce:

loadTinyMCE() {
    if (tinymce)
      tinymce.init({
        selector: '#tinymce',
        skin_url: 'assets/skins/lightgray',
        plugins: ['paste', 'link', 'autoresize','image'],
        setup: editor => {
          this.editor = editor;
        }
      })
  }

最后在 ngdestroy 上销毁 tinymce 对象:

ngOnDestroy() {
    tinymce.remove();
  }

这可能是一种糟糕的方法,但它使我无需在应用程序加载时加载脚本,并使我能够仅在需要时加载它。