Angular - это фреймворк javascript, и у javascript есть ограничения, которые не допускают реального двустороннего связывания данных.
Действительно, первый путь (от шаблона к переменной) стал возможен благодаря встроенному API javascript, который позволяет прослушиватьк событиям в полях ввода, но не существует таких событий, как события, генерируемые при изменении переменной, поэтому другой способ с javascript API невозможен.
Здесь идет изменение обнаружения ,Благодаря возможностям Zone.js, Angular «слушает» ваш код и запускает обнаружение изменений в следующих трех типах событий:
- Событие пользователя на странице (щелчок, отправка, размытие и т. д.))
- XMLHttpRequest завершен
- Таймер (
setTimeout
или setInterval
) вызвал некоторую функцию
При обнаружении изменений шаблон обновляется с каждой связанной переменной.
Вот так практически существует двусторонняя привязка данных.
И, кстати, [(ngModel)]
является синтаксическим сахаром для [ngModel]="variable" (ngModelChange)="variable = $event"
: это два способа