Javascript 角形切割器。TypeError:无法读取属性';类型';insertText后的空值

Javascript 角形切割器。TypeError:无法读取属性';类型';insertText后的空值,javascript,angular,ckeditor,ckeditor4.x,Javascript,Angular,Ckeditor,Ckeditor4.x,我正在构建一个应用程序,在这个应用程序中,我在Angular框架内使用CKEditor 无论如何-一切正常,但当我尝试调用函数insertText时,出现以下错误: edit.html:180 错误类型错误:无法读取null的属性“type” 在a(ckeditor.js:139) 位于CKEDITOR.dom.range.createBookmark2(CKEDITOR.js:141) 位于Array.createBookmarks2(ckeditor.js:487) 位于CKEDITOR.d

我正在构建一个应用程序,在这个应用程序中,我在Angular框架内使用CKEditor

无论如何-一切正常,但当我尝试调用函数insertText时,出现以下错误:

edit.html:180

错误类型错误:无法读取null的属性“type” 在a(ckeditor.js:139) 位于CKEDITOR.dom.range.createBookmark2(CKEDITOR.js:141) 位于Array.createBookmarks2(ckeditor.js:487) 位于CKEDITOR.dom.selection.createBookmarks2(CKEDITOR.js:440) 位于CKEDITOR.plugins.undo.Image(CKEDITOR.js:1081) 位于CKEDITOR.plugins.undo.UndoManager.save(CKEDITOR.js:1076) 在a。(ckeditor.js:1072) 上午(ckeditor.js:10) 位于a.CKEDITOR.event.CKEDITOR.event.fire(CKEDITOR.js:12) 在a.CKEDITOR.editor.CKEDITOR.editor.fire(CKEDITOR.js:13)中,查看\u PageEditComponent\u 3@edit.html:180 DebugContext\u.logError@ services.ts:571 ErrorHandler.handleError@error\u handler.ts:69下一步@ 应用程序参考ts:366 schedulerFn@event\u发射器ts:96 SafeSubscriber.\uuu tryorunsubscriber@Subscriber.ts:252 SafeSubscriber.next@ 订户.ts:204订户._next@Subscriber.ts:135订户.next @Subscriber.ts:95 Subject.next@Subject.ts:61 EventEmitter.emit@ 事件发射器。ts:78 NgZone.triggerError@NgZone.ts:87 onHandleError @ng_zone.ts:283 ZoneDelegate.handleError@zone.js:385 zone.runTask@ zone.js:184 ZoneTask.invoke@zone.js:476

错误上下文调试上下文{视图:对象,节点索引:137,节点索引: 对象,elDef:Object,elView:Object}组件: (…)组件渲染:(…)上下文:(…)elDef: ObjectelOrCompView:(…)elView:Objectinjector:(…)nodeDef: ObjectnodeIndex:137providerTokens:(…)引用:(…)renderNode: (…)视图:对象\uuuuu原型\uuuuuuu:对象组件: (…)组件渲染:(…)上下文:(…)电子组件视图: (…)注入器:(…)日志错误:函数(控制台)提供程序令牌: (…)引用:(…)renderNode:(…)构造函数:函数 DebugContext(视图,节点索引)get组件:函数()get componentRenderElement:function()获取上下文:function()获取 elOrCompView:函数()获取注入器:函数()获取providerTokens: 函数()获取引用:函数()获取渲染节点:函数 ()proto:对象视图_PageEditComponent_3@edit.html:180 DebugContext.logError@services.ts:571 ErrorHandler.handleError@ 错误\u handler.ts:69 next@application\u ref.ts:366 schedulerFn@ 事件发射器。ts:96安全订阅者。ts:252 SafeSubscriber.next@Subscriber.ts:204 Subscriber.\u next@ 订户.ts:135订户.next@Subscriber.ts:95 Subject.next@ Subject.ts:61 EventEmitter.emit@event_emitter.ts:78 NgZone.triggerError@ng_zone.ts:87 onHandleError@ng_zone.ts:283 ZoneDelegate.handleError@zone.js:385 zone.runTask@zone.js:184 ZoneTask.invoke@zone.js:476

这是我的编辑器选择器:

<ckeditor
        name="content"
        id="content"
        [(ngModel)]="page.content"
        debounce="500"
        [config]="{
                                                skins: 'minimalist',
                                                allowedContent: true,
                                                extraPlugins: 'divarea',
                                                contentsCss: CKECSS
                                            }"
        (ready)="setCkeObject($event)"
        (focus)="setCkeObject($event)"
        (blur)="setCkeObject($event)"
        #ckeEditor
>
</ckeditor>
问题是,有时它正常工作,有时不正常

导致此问题的来自ckeditor.js的代码位(第6行):

createBookmark2:function(){
职能a(b){
var e=b.容器,d=b.偏移量,f;
f=e;
var g=d;
f=f.type!=CKEDITOR.NODE_元素| | 0==g | | g==f.getChildCount()?0:f.getChild(g-1)。type==CKEDITOR.NODE_文本和&f.getChild(g)。type==CKEDITOR.NODE_文本;
f&(e=e.getChild(d-1),
d=e.getLength());
if(e.type==CKEDITOR.NODE_元素&&0

提前感谢您的帮助!

我通过修改选择器并在准备就绪时只设置一次CKEditor对象对其进行了排序

<ckeditor
        name="content"
        id="content"
        [(ngModel)]="page.content"
        debounce="500"
        [config]="{
                                                skins: 'minimalist',
                                                allowedContent: true,
                                                extraPlugins: 'divarea',
                                                contentsCss: CKECSS
                                            }"
        (ready)="setCkeObject($event)"
        #ckeEditor
>
</ckeditor>

createBookmark2: function() {
                function a(b) {
                    var e = b.container, d = b.offset, f;
                    f = e;
                    var g = d;
                    f = f.type != CKEDITOR.NODE_ELEMENT || 0 === g || g == f.getChildCount() ? 0 : f.getChild(g - 1).type == CKEDITOR.NODE_TEXT && f.getChild(g).type == CKEDITOR.NODE_TEXT;
                    f && (e = e.getChild(d - 1),
                    d = e.getLength());
                    if (e.type == CKEDITOR.NODE_ELEMENT && 0 < d) {
                        a: {
                            for (f = e; d--; )
                                if (g = f.getChild(d).getIndex(!0),
                                0 <= g) {
                                    d = g;
                                    break a
                                }
                            d = -1
                        }
                        d += 1
                    }
                    if (e.type == CKEDITOR.NODE_TEXT) {
                        f = e;
                        for (g = 0; (f = f.getPrevious()) && f.type == CKEDITOR.NODE_TEXT; )
                            g += f.getText().replace(CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE, "").length;
                        f = g;
                        e.getText() ? d += f : (g = e.getPrevious(c),
                        f ? (d = f,
                        e = g ? g.getNext() : e.getParent().getFirst()) : (e = e.getParent(),
                        d = g ? g.getIndex(!0) + 1 : 0))
                    }
                    b.container = e;
                    b.offset = d
                }
                function b(a, c) {
                    var e = c.getCustomData("cke-fillingChar");
                    if (e) {
                        var d = a.container;
                        e.equals(d) && (a.offset -= CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE.length,
                        0 >= a.offset && (a.offset = d.getIndex(),
                        a.container = d.getParent()))
                    }
                }
                var c = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT, !0);
                return function(c) {
                    var d = this.collapsed
                      , f = {
                        container: this.startContainer,
                        offset: this.startOffset
                    }
                      , g = {
                        container: this.endContainer,
                        offset: this.endOffset
                    };
                    c && (a(f),
                    b(f, this.root),
                    d || (a(g),
                    b(g, this.root)));
                    return {
                        start: f.container.getAddress(c),
                        end: d ? null : g.container.getAddress(c),
                        startOffset: f.offset,
                        endOffset: g.offset,
                        normalized: c,
                        collapsed: d,
                        is2: !0
                    }
                }
            }(),
<ckeditor
        name="content"
        id="content"
        [(ngModel)]="page.content"
        debounce="500"
        [config]="{
                                                skins: 'minimalist',
                                                allowedContent: true,
                                                extraPlugins: 'divarea',
                                                contentsCss: CKECSS
                                            }"
        (ready)="setCkeObject($event)"
        #ckeEditor
>
</ckeditor>