【问题标题】:ng2-ckeditor not working in angular2 app? Why?ng2-ckeditor 在 angular2 应用程序中不起作用?为什么?
【发布时间】:2016-07-08 12:05:30
【问题描述】:

我正在尝试在我的 angular2 应用程序中使用 ng2-ckeditor 组件,但由于某种原因,我在控制台中不断出现错误提示

原始异常:ReferenceError:CKEDITOR 未定义

这是我的代码。

system.config.json

(function(global) {
    // map tells the System loader where to look for things
    var map = {
        'app':                        'app', // 'dist',
        '@angular':                   'node_modules/@angular',
        'rxjs':                       'node_modules/rxjs',
        'angular2-tree-component':    'node_modules/angular2-tree-component',
        'lodash':                     'node_modules/lodash',
        'ng2-ckeditor':               'node_modules/ng2-ckeditor'
    };
    // packages tells the System loader how to load when no filename and/or no extension
    var packages = {
        'app':                      { main: 'main.js',  defaultExtension: 'js' },
        'rxjs':                     { defaultExtension: 'js' },
        'angular2-tree-component' : { main: 'dist/angular2-tree-component.js', defaultExtension: 'js' },
        'lodash' :                  { main: 'lodash.js', defaultExtension: 'js' },
        'ng2-ckeditor' :            { main: 'lib/CKEditor.js', defaultExtension: 'js' }
    };
    var ngPackageNames = [
        'common',
        'compiler',
        'core',
        'forms',
        'http',
        'platform-browser',
        'platform-browser-dynamic',
        'router',
        'router-deprecated',
        'upgrade'
    ];
    // Individual files (~300 requests):
    function packIndex(pkgName) {
        packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
    }
    // Bundled (~40 requests):
    function packUmd(pkgName) {
        packages['@angular/'+pkgName] = { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' };
    }
    // Most environments should use UMD; some (Karma) need the individual index files
    var setPackageConfig = System.packageWithIndex ? packIndex : packUmd;
    // Add package entries for angular packages
    ngPackageNames.forEach(setPackageConfig);
    var config = {
        map: map,
        packages: packages
    };
    System.config(config);
})(this);

content.component.ts

import { Component, Input } from '@angular/core';
import { Content } from './models/content';
import { CKEditor } from 'ng2-ckeditor';

@Component({
    selector: 'content',
    template: '<ckeditor [(ngModel)]="content.text" [config]="{ uiColor: '#99000' }" debounce="500"></ckeditor>',
    directives: [ CKEditor ]
})

export class ContentComponent {

    @Input()
    content: Content;

    active: number = 1;
    sizes: number[] = [ 12, 11, 10, 9, 8, 7, 6, 4, 5, 3, 2, 1 ];

    getAnchor() {
        return '';
    }
}   

在这里还可以看到,在我的网络选项卡中,正在加载 CKEditor.js 文件。

有人知道为什么这不起作用吗?

【问题讨论】:

标签: javascript angularjs angular


【解决方案1】:

这意味着您的 CKEDITOR JavaScript 没有加载。

文件CKEditor.js 指的是不包含编辑器本身的Angular2 组件。该文件是part of the repo

所以你需要自己包含ckeditor.js

我不确定line 159 的情况,它应该会检测到缺少的 CKEDITOR JavaScript。可能会在CKEditor.js 内的哪一行显示整个错误消息,它会引发错误。

【讨论】:

  • 我现在已经通过 npm npm install ckeditor --save 安装了 CKEditor。我也可以通过 systemjs 加载它吗?
  • 我确定你不能。 CKEditor 不支持任何模块系统,因此您必须将其包含在 &lt;script&gt; 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2017-12-19
  • 1970-01-01
  • 2016-07-14
  • 2019-10-17
相关资源
最近更新 更多