Angular 5中值和ngValue之间的差异

时间:2018-04-19 10:22:51

标签: angular angular-forms

今天我意识到Angular 5中反应形式的意外(对我来说)行为。服务器从应用程序接收一个值为“null”而不是null值的字符串,这就是我想要的。< / p>

我做了以下测试:

https://stackblitz.com/edit/angular-rjrspr?file=app%2Fapp.component.html

如下图所示,如果我在select中使用[value]="null",则该字段的值为“null”(字符串文字)。但是,如果我使用[ngValue]="null",则会获得预期的null值。

enter image description here

我认为使用value用于反应式表单,而ngValue用于模板驱动表单。我想知道在我的表格中使用两者是否安全(我总是使用反应形式)以及是否对不同的行为有任何解释。

谢谢!

5 个答案:

答案 0 :(得分:33)

可以使用valuengValue

两者之间的唯一区别是value始终是字符串,其中ngValue可以传递对象

答案 1 :(得分:3)

const items = ["foo", "bar", "baz"]

<option *ngFor="let item of items" [value]="item">
    {{item}}
</option>

在选择其中一个选项时,使用[value]的值将为foobarbaz

<option *ngFor="let item of items" [ngValue]="item">
    {{item}}
</option>

在选择其中一个选项时,使用[ngValue]的值将为0: foo1: bar2: baz

答案 2 :(得分:1)

当您需要绑定到对象集合中的对象而不是由option元素显示的字符串作为示例时,ngValue非常有用。

  <select [(ngModel)]='selectedColor'>
    <option *ngFor="let color of colors" [ngValue]="color"  >{{color.name}}</option>
  </select>

其中

  colors: [{code:'#FF0000', name:'Red'}, {code:'#00FF00', name:'Green'}, {code:'#0000FF', name:'Blue'}];

selectedColor是上面的颜色对象之一。

答案 3 :(得分:0)

value或ngValue之间没有太大差异。

唯一的区别是,当您输入 <div class="main"> <div class="loader"></div> </div>并使用String 时,当您输入 value时使用{{1} }

答案 4 :(得分:0)

value必须是字符串,但是ngValue-是您想要的。如果值类型为int而非字符串,则值不会绑定到selectlist。