[(ngModel)]和[ngModel]之间的区别是绑定状态到属性?

时间:2017-02-28 09:30:45

标签: angular

这是一个模板示例:

 <input type="number" class="form-control" [(ngModel)]="overRideRate" formControlName="OverRideRate">

 <input type="number" class="form-control" [ngModel]="overRideRate" formControlName="OverRideRate">

这两个人都做同样的事情。哪一个是首选,为什么?

5 个答案:

答案 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)

Angular2 +数据流:

在Angular中,数据可以通过以下方式在模型(组件类ts.file)和视图(组件html)之间流动:

  1. 从模型到视图。
  2. 从视图到模型。
  3. 数据在两个方向上流动,也称为 2路数据绑定

语法:

要查看的模型:

<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路数据绑定。基本上,这两者都是语法糖:

  1. 将模型绑定到视图。
  2. 将视图绑定到模型

现在,在我们的类中有一些更改,这将反映我们的视图(从模型到视图),并且每当用户更改输入时,模型就会被更新(从模型到视图)。

答案 4 :(得分:2)

[ngModel]评估代码并生成输出(无双向绑定)
[(ngModel)]评估代码并生成输出,并启用双向绑定