Проблема с запуском событий Angular 2+ и выше на стандартном вводе текста - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть текстовая область, в которой пользователи печатают сообщения или могут вставлять их, когда они вставляются, и если у содержимого есть какие-либо теги 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();
                  }
...