В моем приложении Angular 9 я пытаюсь добавить собственную кастомную вставку для Quill. Я не смог найти учебник для angular, в котором было бы что-то большее, чем изображение, поэтому я объединил несколько постов вместе. В конце концов я нашел этот ответ . К сожалению, каждый раз, когда я получаю следующую ошибку:
ERROR Error: [Parchment] Unable to create my-custom-tag blot
at new ParchmentError (quill.js:148)
at Object.create (quill.js:178)
at BlockBlot.insertAt (quill.js:7483)
at Block.insertAt (quill.js:905)
at Scroll.ContainerBlot.insertAt (quill.js:3454)
at ScrollBlot.insertAt (quill.js:7218)
at Scroll.insertAt (quill.js:4324)
at Editor.insertEmbed (quill.js:2656)
at quill.js:1429
at Quill.modify (quill.js:1660)
Я использую angular компонент с Quill в нескольких местах. Мой код:
import { Component, OnInit, Input } from '@angular/core';
import { PresenterParagraph } from '../../shared/models/_models';
declare var Quill: any;
var Embed = Quill.import('blots/embed');
class MyCustomTag extends Embed {
static create(paramValue) {
let node = super.create();
node.innerHTML = paramValue;
//node.setAttribute('contenteditable', 'false');
//node.addEventListener('click', MyCustomTag.onClick);
return node;
}
static value(node) {
return node.innerHTML;
}
}
MyCustomTag.blotName = 'my-custom-tag';
MyCustomTag.className = 'my-custom-tag';
MyCustomTag.tagName = 'my-custom-tag';
Quill.register(MyCustomTag);
console.log("Quill Version: ", Quill.version);
@Component({
selector: 'app-editor-paragraph',
templateUrl: './editor-paragraph.component.html',
styleUrls: ['./editor-paragraph.component.scss']
})
export class EditorParagraphComponent implements OnInit {
@Input() paragraph: PresenterParagraph;
editor: any;
constructor() { }
ngOnInit(): void {
}
created(editor) {
this.editor = editor;
}
insertEmbed() {
this.editor.insertEmbed(
0, //INDEX_WHERE_YOU_TO_INSERT_THE_CONTENT,
'my-custom-tag',//THE NAME OF YOUR CUSTOM TAG
'<span>MY CONTENT</SPAN>'// THE CONTENT YOUR TO INSERT
);
}
selectionChanged(x: any) {
console.log(x);
}
}
HTML
<mat-checkbox [checked]="paragraph.selected" class="selector"></mat-checkbox>
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
{{paragraph?.title}}
</mat-panel-title>
</mat-expansion-panel-header>
<quill-editor [(ngModel)]="paragraph.content" (onSelectionChanged)="selectionChanged($event)" (onEditorCreated)="created($event)" ></quill-editor>
<p>{{paragraph?.content}}</p>
<button (click)="insertEmbed()">Insert</button>
<app-editor-paragraphs [paragraphs]="paragraph?.paragraphs"></app-editor-paragraphs>
</mat-expansion-panel>
Возможно, я что-то перепутал, поэтому буду очень благодарен за любые предположения, что не так.