Я пытаюсь заменить динамический c текст, который приходит из contenteditable div, сортировать слова с помощью регулярных выражений и обернуть их компонентом angular.
Пока что я нашел способ заменить этот текст тегом компонента, но я не могу заставить компонент работать. Вместо этого он просто показывает компонент как пустой.
Как я могу вручную запустить / запустить эти динамически добавленные компоненты?
app.component. html:
<div #from_field (keyup)="textarea_keyup_event(from_field)" contenteditable="true">
This text can be edited by the user.
If the user writes the 'moo' word, it should be wrapped with "replacer" component.
</div>
app.component.ts:
function getFormattedText(text) {
var parts = text.split(/(\bmoo+\b)/gi);
for (var i = 1; i < parts.length; i += 2) {
parts[i] = '<app-replacer key="'+ i + '">' + parts[i] + '</app-replacer>';
}
return parts.join('');
}
textarea_keyup_event(element) {
const preFormattedText = element.textContent;
element.innerHTML = getFormattedText(preFormattedText);
}
// if you write:
// "I am a cow; cows say moo. MOOOOO."
// it replaces the DOM with this:
// "I am a cow; cows say <app-replacer key="1">moo</app-replacer>. <app-replacer key="3">MOOOOO</app-replacer>."
// but the app-replacer tag doesn't fire up the component.