Angular 如何知道在双向数据绑定中要绑定到哪个 "event"

How does Angular know which "event" to bind to in Two-Way Data Binding

我理解 Angular 下面两行在功能上是相同的

属性 和事件绑定

<input type="text" [value]="customerName" (input)="customerName= $event.target.value" />

双向数据绑定

<input type="text" [(ngModel)]="customerName' />

让我感到困惑的是 Angular 如何通过双向数据绑定知道绑定到 [=15= 的 input event ] 元素而不是 input 元素支持的任何其他事件?

在第一个示例中,代码专门定义了绑定到哪个事件("input" event),但在第二个示例中没有。 Angular如何选择要绑定的事件?

数据绑定的两种方式并不是真正绑定到输入事件,它是 ngModel 指令的工作方式:它将给定对象值的任何更改传递给输入元素,反之亦然.

<input [(ngModel)]="customerName"><input [ngModel]="customerName" (ngModelChange)="customerName = $event"> 的缩写形式。这是 Angular 中的约定,也适用于您自己的自定义指令。

NgModelDirective(受 [ngModel] 约束)提供 @Input('ngModel') model: any;@Output('ngModelChange') update = new EventEmitter();.

我建议您看一下 docs and also at the source 以获得更好的理解。