Получение и изменение модели¶
Кроме создания привязки директива ngModel
позволяет определить объект NgModel
, который будет связан с определенным элементом ввода. Например, определим следующий компонент:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
|
Здесь для каждого поля определена переменная типа NgModel: #phoneTitle="ngModel"
или #phonePrice="ngModel"
. Каждая из этих переменных представляет модель и ее состояние для соответствующего поля ввода. Используя свойства объекта NgModel
, мы можем получить данные о состоянии модели. В частности, с помощью свойства name мы можем получить название поля ввода (значение атрибута name
), к которому привязана переменная. А с помощью свойств model
и viewModel
можно получить модель или конкретное значение этого поля. Например, далее выводится блок с введенными значениями:
1 2 3 4 5 |
|
Ну и также мы можем передавать подобные переменные в обработчики событий и обрабатывать в коде компонента. Как в данном случае, данные переменные выводятся на консоль.
Обработка изменения модели¶
Иногда возникает необходимость проконтролировать изменение модели. Для этого в Angular мы можем обрабатывать встроенные события, в частности, событие change
. Например, изменим поле ввода для модели телефона:
1 2 3 4 5 6 7 |
|
При срабатывании события change
будет вызываться метод onTitleChange()
. Теперь определим данный метод в классе компонента:
1 2 3 4 5 |
|
Допустим, мы не хотим, чтобы пользователь вводил слово "нет", и динамически заменяем это слово на некоторую другую строку.
Обработка данного события имеет один минус — событие срабатывает только тогда, когда мы покинем данное поле ввода. Если же нам надо динамически при вводе каждого нового символа обрабатывать ввод, то в этом случае более удобным решением будет обработка события ngModelChange
. Это событие не соотносится ни с каким стандартным событием элемента html. Функциональность ngModelChange
привносится в элемент через применение к нему директивы NgModel
. Например:
1 2 3 4 5 6 7 |
|
Код метода onTitleChange()
остается тем же, что и выше.