Получение выделенного текста в приложении Angular

#html #angular #typescript

Вопрос:

Просмотрев несколько руководств о том, как получить выделенный текст в проекте Angular, всегда используется следующий фрагмент кода, но когда я включаю его в свой компонент, я получаю ошибки:

 getSelection() {

    let text = "";

    if (window.getSelection) {
        text = window.getSelection().toString();
    } else if (document.selection amp;amp; document.selection.type != "Control") {
        text = document.selection.createRange().text;
    }

    return text;
}
 

Первая ошибка красного подчеркивания-это Object is possibly 'null' .
Остальные трое Property 'selection' does not exist on type 'Document' -да .

Что я здесь упускаю?

введите описание изображения здесь

Ответ №1:

Попробуйте ссылаться в своем html-коде с помощью @ViewChild

 @ViewChild('contentEditable') public el: ElementRef;
 

создать диапазон (https://developer.mozilla.org/en-US/docs/Web/API/Range)

 this.el.nativeElement.focus();
const sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(this.rangeClone);
 

И получите выбор

 let range = document.createRange();
range = window.getSelection().getRangeAt(0);
this.rangeClone = range.cloneRange();
 

Комментарии:

1. Я не понимаю, что ты имеешь в виду. Этот метод является частью моей службы. Вы хотите сказать, что это должно быть в моем коде компонента? Должен ли код, который вы включили, заменить код в моем методе?

2. да, это должно быть в компоненте, вместо того, чтобы использовать ваш метод, используйте логику, которую я отправил