У меня есть текстовая область, в которой пользователи печатают сообщения или могут вставлять их, когда они вставляются, и если у содержимого есть какие-либо теги html или js, которые следует очистить.
Я просто использую ngModelChange, атрибут двустороннего связывания получает значение, очищает его и присваивает новое значение свойству, которое используется в двухстороннем связывании.Это работает в большинстве случаев хорошо.Даже когда я постоянно вставляю много раз, это работает без каких-либо проблем, но когда я выполняю ctrl + a и ctrl + v, это работает неправильно.Он может работать в первый раз, а затем сохраняет полный html в текстовой области вместо очищенного текста, но код выполняется правильно и печатает очищенный код в консоли.
Просмотр кода:
<textarea class="form-control" placeholder="Type your message" [(ngModel)]="myData" (ngModelChange)="modelChanged()" ></textarea>
Метод контроллера, который вызывается onModelChange.
modelChanged(){
let txt = this.myData;
txt = txt ? String(txt).replace(/]+>/gm, '') : '';
txt = txt.replace(/\s{2,}/g,' ');
// console.log('1. ' + txt.trim());
this.myData= txt.trim();
}