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

时间:2017-03-14 06:36:44

标签: angularjs angular

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

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

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

<input type='text' [(value)]='model' />

3 个答案:

答案 0 :(得分:4)

你可以做到

<input type='text' [value]='model' (input)="model=$event" />

[(value)]='model'无法正常工作,因为<input>没有发出valueChange事件。

ngModel还提供表单集成,直接进行值绑定。

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

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

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

答案 1 :(得分:1)

你可以,但只使用[value]这样

<input type='text' [value]='model' />

我们使用[(ngModel)]因为它是双向数据绑定,而[value]是单向binidng

当我们将[]()一起使用时,这意味着它是双向绑定。

除了简单(input)之外没有。事件有像mouseover mouseout之类的angular2。

答案 2 :(得分:1)

你可以做到但是......

  • Angular以其内置指令方法而闻名,您可以使用它来管理/做很多事情。
  • ngModel指令允许您根据需要使用 one-way two-way 绑定。
  • Angular具有内置的表单管理系统,通常与 ngModel 指令一起使用,您可以通过该指令查看是否有任何表单控件 valid 是否 form 有效或无效。
  • ngModel 指令使用 Observable Observer 模式构建,允许您发出随时间推移的数据流。

简而言之, ngModel 指令带来了很多好处,所以通常人们更喜欢使用 ngModel 而不是 {{1语法。