Angular 2+ Односторонняя привязка данных от цели просмотра к источнику данных
В моем угловом приложении у меня есть элемент, который позволяет пользователю установить значение описания. Я хочу, чтобы это значение было приемлемым в источнике данных. Я получил это для работы с использованием двусторонней привязки данных, как показано ниже:
<textarea id="MediaDescription" name="description" class="form-control" [(ngModel)]="description"></textarea>
Однако, учитывая мой вариант использования, двухстороннее связывание данных здесь не требуется. Хотя модель представления должна иметь возможность обновлять источник данных, обратное неверно.
Я пытался сделать это с помощью (ngModelChange)
, но это, кажется, не вызывается (я проверил это путем вывода значения через OnChanges()
метод в источнике данных).
Как я могу лучше переписать этот код так, чтобы мой <textarea>
значение привязано только от источника просмотра к источнику данных, а не наоборот?
2 ответа
Вам действительно не нужно ngModel
Вот. Вместо этого вы можете слушать change
событие
<textarea id="MediaDescription" name="description" class="form-control" (change)="description = $event.target.value"></textarea>
Замечания: (change)
событие срабатывает только тогда, когда text-area
элемент теряет фокус. Это ограничение.
Обновлять источник данных каждый раз textarea
изменения содержимого, без использования привязки данных, вы можете применить ngModel
директива сама по себе, чтобы позволить (ngModelChange)
быть вызванным:
<textarea name="description" ngModel (ngModelChange)="description = $event" ...></textarea>
Смотрите этот стек для демонстрации.