Двустороннее связывание¶
Механизм двустороннего связывания (angular two way binding) используется, когда необходимо отобразить свойство в шаблоне (одностороннее связывание) и обновить его при изменении значения (возникновение события) без перезагрузки страницы.
Синтаксис двустороннего связывания представляет собой слияние [] одностороннего связывания и () привязки события.
1 | |
Запись [(name)]="contactPerson" означает, что при изменении name в компоненте contacts-item его значение будет присвоено свойству contactPerson компонента, в который входит contacts-item.
Изменим пример из предыдущей главы.
contacts.component.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
contacts-item.component.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Очевидно, что <contacts-item [(name)]="contactPerson"></contacts-item> является более удобным синтаксисом для <contacts-item [name]="contactPerson" (nameChange)="contactPerson = $event"></contacts-item>
Общепринято при использовании angular two way binding метод, который изменяет значение отслеживаемого свойства (здесь name), называть как "имя свойства" + "Change" (здесь nameChange).
Декораторы @Input() и @Output() рассмотрены здесь.
NgModel¶
Для двустороннего связывания в полях формы используется встроенная в Angular директива NgModel.
1 | |
При изменении поля его значение помещается в свойство contactPerson.
Директива может использоваться только с элементами формы.
NgModel находится в FormsModule, поэтому перед тем, как ее использовать, импортируйте FormsModule библиотеки @angular/forms.