Двусторонняя привязка¶
30.09.2026
Двусторонняя привязка — краткая запись, которая одновременно передаёт значение в элемент и даёт этому элементу вернуть изменения обратно через ту же привязку.
Синтаксис¶
Синтаксис двусторонней привязки — сочетание квадратных и круглых скобок, [()]. Он объединяет синтаксис привязки свойства [] и синтаксис привязки события (). В сообществе Angular эту запись неформально называют «банан в коробке».
Двусторонняя привязка с элементами форм¶
Двустороннюю привязку часто используют, чтобы данные компонента оставались согласованными с элементом формы, пока пользователь с ним работает. Например, когда пользователь заполняет текстовое поле, должно обновляться состояние компонента.
В примере ниже значение firstName на странице обновляется динамически:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Чтобы использовать двустороннюю привязку с нативными элементами форм, нужно:
- Импортировать
FormsModuleиз@angular/forms - Использовать директиву
ngModelс синтаксисом двусторонней привязки (например,[(ngModel)]) - Присвоить ей состояние, которое нужно обновлять (например,
firstName)
После этой настройки Angular следит, чтобы любые изменения в текстовом поле правильно отражались в состоянии компонента.
Подробнее о NgModel — в официальной документации.
Двусторонняя привязка между компонентами¶
Двусторонняя привязка между родительским и дочерним компонентом требует больше настройки, чем у элементов формы.
В примере ниже App задаёт начальное состояние счётчика, а логика обновления и отрисовки интерфейса счётчика в основном живёт в дочернем компоненте Counter.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Как включить двустороннюю привязку между компонентами¶
Если разобрать пример до сути, каждой двусторонней привязке между компонентами нужно следующее.
Дочерний компонент должен содержать свойство model.
Упрощённый пример:
1 2 3 4 5 6 7 8 9 10 11 12 | |
Родительский компонент должен:
- Обернуть имя свойства
modelв синтаксис двусторонней привязки. - Присвоить свойству
modelсвойство или сигнал.
Упрощённый пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Источник: https://angular.dev/guide/templates/two-way-binding