angular - 将自定义 html 插入 quill 编辑器

标签 angular editor contenteditable quill

我将 Quill 用于我的发送邮件表单,并且在我的工具栏中,我有一个带有签名的下拉列表。
当我选择一个签名时,我必须在编辑器中插入自定义和复杂的 html 代码(格式化并带有 img),当我更改签名时,我必须替换插入的 html 代码。

我将代码插入到指定 id 的 p 标签中,但 Quill 清除了代码并删除了 id,因此我找不到 p 标签。

我需要保留 html 代码和 id。

有人可以帮助我吗?
请。

最佳答案

你必须写一个自定义 Blot , 像这样:

class Signature extends BlockEmbed {
  static create(value) {
    const node = super.create(value);
    node.contentEditable = 'false';
    this._addSignature(node, value);
    return node;
  }

  static value(node) {
    return node.getAttribute(Signature.blotName)
  }

  static _addSignature(node, value) {
    node.setAttribute(Signature.blotName, value);

    // This is a simple switch, but you can use
    // whatever method of building HTML you need.
    // Could even be async.
    switch (value) {
      case 1:
        return this._addSignature1(node);
      default:
        throw new Error(`Unknown signature type ${ value }`);
    }
  }

  static _addSignature1(node) {
    const div = document.createElement('DIV');
    div.textContent = 'Signature with image';
    const img = document.createElement('IMG');
    img.src = 'https://example.com/image.jpg';

    node.appendChild(div);
    node.appendChild(img);
  }
}
Signature.blotName = 'signature';
Signature.tagName = 'DIV';
Signature.className = 'ql-signature';

确保您register它:
Quill.register(Signature);

然后你可以像这样使用它:
quill.updateContents([
  { insert: { signature: 1 } },
]);

关于angular - 将自定义 html 插入 quill 编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55161961/

相关文章:

vim - Vim:针对每种文件类型突出显示单词TODO

jquery - Rangy 和 ContentEditable - 设置插入符

angular - 使用 ngModelChange 去抖 Angular 2

c# - 如何仅将日期从 angular 6 传递到 web api

c - 如何在 MS-windows vista 中使控制台屏幕(Turbo C 编辑器)全屏显示

java - 需要用 JavaScript 编写的 Java 编辑器

php - 什么是最好的 WYSIWYG contenteditable 插件,用于编辑 HTML,同时保留动态 PHP/ASP/等。内容?

html - 具有 contenteditable 属性的 Span 在 IE11 中不会表现为内联元素

angular - 覆盖只读/禁用样式/CSS

Angular 2获取div的宽度