直接绑定到 value 属性而不是 ngModel

Han*_*ans 3 angularjs angular

要将输入的值绑定到属性,我们使用 ngModel 指令。例如:

<input type='text' [(ngModel)]='model' />
Run Code Online (Sandbox Code Playgroud)

为什么我们不能简单地value对输入元素的属性使用绑定?

<input type='text' [(value)]='model' />
Run Code Online (Sandbox Code Playgroud)

Gün*_*uer 5

你可以做

<input type='text' [value]='model' (input)="model=$event" />
Run Code Online (Sandbox Code Playgroud)

[(value)]='model'不起作用,因为<input>它不发出valueChange事件。

ngModel 还提供了直接值绑定所没有的表单集成。

另见https://angular.io/docs/ts/latest/guide/template-syntax.html#!#two-way

ngModel使用 provided ControlValueAccessors,它们是为各种输入元素提供的指令(也可以是您自己的组件的自定义元素),充当ngModel任何组件之间的适配器。这是为了统一绑定各种组件和输入元素。

另见https://github.com/angular/angular/blob/2.4.8/modules/%40angular/forms/src/directives/checkbox_value_accessor.ts#L17-L50