javascript - Angular 2 : model doesn't update immediately after updating text in a TinyMCE textarea

标签 javascript angular tinymce

如果我有一个像这样的常规文本区域:

<textarea [(ngModel)]="model.body" name="body" id="body"></textarea>

当我在文本区域中键入内容时,页面上的以下内容会实时更新文本:

{{model.body}} // <-- updates in real time

但是,如果我将 TinyMCE 附加到同一个文本区域:

// WYSIWYG for body field
tinymce.init({
    selector: '#body',
    plugins: ['link'],
    skin_url: 'assets/skins/lightgray',
    menubar: false,
    statusbar: false,
    toolbar: 'bold italic underline link',
    setup: editor => {
        this.editor = editor;
        editor.on('keyup', () => {
            const content = editor.getContent();
            this.onEditorKeyup.emit(content);
            this.model.body = content;
        });
    }
});

然后 {{model.body}} 不再实时更新,而是我必须单击页面上的其他表单字段之一,例如:

<input matInput required [(ngModel)]="model.title" name="title">

一旦点击{{model.body}},就会更新TinyMCE内的内容。有办法解决这个问题吗?

最佳答案

我认为问题在于 editor.on(...) 方法绑定(bind)在 Angular 的 zone 之外,因此它不知道何时进行了更改。因此,您必须“唤醒”zone,例如使用 ChangeDetectorRef 和方法 detectChanges()

constructor(
   private cdr: ChangeDetectorRef,
   ... // other dependencies
) { }

// other declarations for TinyMCE
setup: editor => {
        this.editor = editor;
        editor.on('keyup', () => {
            const content = editor.getContent();
            this.onEditorKeyup.emit(content);
            this.model.body = content;
            this.cdr.detectChanges();
        });

关于javascript - Angular 2 : model doesn't update immediately after updating text in a TinyMCE textarea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47820534/

相关文章:

css - 全局切换 css 类?

excel - Tinymce 从 excel 复制/粘贴(插件 BBcode)

javascript - 拖放后保留 iframe 中的内容 - TinyMCE

JavaScript 游戏 - 如何自动调用对象的新实例

javascript - 我想获取div的id,它是从最后一个div到第一个div的显示 block ?

Angular 4.3.3 HttpClient JSON 解析错误,GET 只返回 null

javascript - Angularjs:Tinymce 无法在 md-dialog 内工作

javascript - 使用 !obj 简单地检查 undefined 和 null

javascript - 如何发送简单的ajax请求?

javascript - 为什么在 Angular 7 中更改路线时 Jquery 不加载?