要将输入的值绑定到属性,我们使用ngModel指令。例如:
<input type='text' [(ngModel)]='model' />
为什么我们不能简单地在输入元素的value
属性上使用绑定?
<input type='text' [(value)]='model' />
答案 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
之间的适配器和任何组件。这是为了统一与各种组件和输入元素的绑定。
答案 1 :(得分:1)
你可以,但只使用[value]
这样
<input type='text' [value]='model' />
我们使用[(ngModel)]
因为它是双向数据绑定,而[value]
是单向binidng
当我们将[]
与()
一起使用时,这意味着它是双向绑定。
除了简单(input)
之外没有。事件有像mouseover
mouseout
之类的angular2。
答案 2 :(得分:1)
你可以做到但是......
ngModel
指令允许您根据需要使用 one-way
或 two-way
绑定。 ngModel
指令一起使用,您可以通过该指令查看是否有任何表单控件 valid
是否 form
有效或无效。ngModel
指令使用 Observable
和 Observer
模式构建,允许您发出随时间推移的数据流。简而言之, ngModel
指令带来了很多好处,所以通常人们更喜欢使用 ngModel
而不是 {{1语法。