Я создаю Angular 7 приложение. В этом приложении у меня есть страница с div, который получил contenteditable значение true. Когда пользователь нажимает клавишу ввода, новый div добавляется в редактор / div сразу после div, который был сфокусирован, когда пользователь нажимал ввод. К сожалению, этот код (см. Ниже) работает, только если div получил хотя бы один символ. Это не очень хорошо, потому что я хотел бы использовать поддельный заполнитель в div, а не фактические символы.
Как я могу изменить свой код ниже, чтобы он работал, даже если div пуст?
insertBlock($event) {
$event.preventDefault();
const selection = window.getSelection();
const selectedElement = selection.anchorNode.parentNode;
const block = document.createElement('div');
block.innerHTML = 'Type slash for commands';
block.className = 'ce-block';
block.setAttribute('placeholder', 'Type slash for commands');
this.editor.insertBefore(block, selectedElement.nextSibling);
selection.collapse(block.firstChild, block.textContent.length);
}
HTML выглядит следующим образом (я использую директиву для прослушивания событий редактора):
<div class="ce-container" blockeditor [menu]="menu">
<div class="ce-menu" contenteditable="false" #menu>Menu</div>
<div class="ce-block" placeholder="Type slash for commands"></div>
</div>
Идея заключается в создании так называемого редактора блоков (как, например, Notion.so).
Спасибо!