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 элемент теряет фокус. Это ограничение.

DEMO

Обновлять источник данных каждый раз textarea изменения содержимого, без использования привязки данных, вы можете применить ngModel директива сама по себе, чтобы позволить (ngModelChange) быть вызванным:

<textarea name="description" ngModel (ngModelChange)="description = $event" ...></textarea>

Смотрите этот стек для демонстрации.

Другие вопросы по тегам