这是一个模板示例:
<input type="number" class="form-control" [(ngModel)]="overRideRate" formControlName="OverRideRate">
<input type="number" class="form-control" [ngModel]="overRideRate" formControlName="OverRideRate">
这两个人都做同样的事情。哪一个是首选,为什么?
答案 0 :(得分:80)
[(ngModel)]="overRideRate"
是[ngModel]="overRideRate"
(ngModelChange)="overRideRate = $event"
[ngModel]="overRideRate"
是将overRideRate
绑定到input.value
(ngModelChange)="overRideRate = $event"
将在发出overRideRate
事件时更新input.value
,其值为change
。它们是Angular2为双向绑定提供的。
答案 1 :(得分:36)
[ngModel]="currentHero.name"
是单向绑定的语法,而
[(ngModel)]="currentHero.name"
用于双向绑定,语法复合自:
[ngModel]="currentHero.name"
和(ngModelChange)="currentHero.name = $event"
如果您只需要传递模型,请使用第一个模型。如果您的模型需要监听更改事件(例如,当输入字段值更改时),请使用第二个。
答案 2 :(得分:19)
这很简单
[] =&gt;组件到模板
()=&gt;模板到组件
[(ngModel)]
是[ngModel]="currentHero.name" (ngModelChange)="currentHero.name=$event">
这里有更多细节: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#ngModel
答案 3 :(得分:4)
在Angular中,数据可以通过以下方式在模型(组件类ts.file)和视图(组件html)之间流动:
要查看的模型:
<input type="text" [ngModel]="overRideRate">
此语法也称为属性绑定。现在,如果输入字段的overRideRate
属性发生更改,则视图将自动更新。但是,如果在用户输入数字时视图更新,则overRideRate
属性将不会更新。
查看模型:
(input)="change($event)" // calling a method called change from the component class
(input)="overRideRate=$event.target.value" // on input save the new value in the title property
这里发生的事情是触发了一个事件(在这种情况下为输入事件,但可以是任何事件)。然后,我们可以调用组件类的方法或直接将该属性保存在类属性中。
2路数据绑定:
<input [(ngModel)]="overRideRate" type="text" >
以下语法用于2路数据绑定。基本上,这两者都是语法糖:
现在,在我们的类中有一些更改,这将反映我们的视图(从模型到视图),并且每当用户更改输入时,模型就会被更新(从模型到视图)。
答案 4 :(得分:2)
[ngModel]
评估代码并生成输出(无双向绑定)。
[(ngModel)]
评估代码并生成输出,并启用双向绑定。