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

Как можно очистить ввод от вставленного содержимого?

Я попытался привязать контент к модели, а затем удалить модель, но это все равно оставит фактическое вставленное содержимое в объекте события, поэтому это не решение.

Также попытался очистить ввод напрямую с помощью input.value = '', но безуспешно.

Разметка:

<input #input [(ngModel)]="newTag[labelKey]" (paste)="onPaste($event)">

Функция:

onPaste(e: any) {

  let content = e.clipboardData.getData('text/plain');

  // Do stuff 

  // Then clear pasted content from the input
}
3
Chrillewoodz 29 Июн 2016 в 16:36

1 ответ

Лучший ответ

Очистите переменную, к которой вы привязали модель:

onPaste(e: any) {

  let content = e.clipboardData.getData('text/plain');

  // Do stuff 

  setTimeout(() => {
    this.newTag = "";
  }, 0);
}

По какой-то причине текст остается на входе, при синхронном вызове this.newTag = "" и если вы установите его на this.newTag = "foo", текст на входе будет fooPASTEDTEXT.


Plunker в качестве рабочего примера.

14
rinukkusu 29 Июн 2016 в 16:56
Может, вам нужно вызвать обнаружение изменений или что-то в этом роде? Хотя я уже выделяю общую стоимость модели после того, как это сделаю.
 – 
Chrillewoodz
29 Июн 2016 в 16:44