Differences between value and ngValue in Angular 5
Its ok to use value
or ngValue
.
The only difference between two is that value
is always string, where in ngValue
you can pass object
const items = ["foo", "bar", "baz"]
<option *ngFor="let item of items" [value]="item">
{{item}}
</option>
using [value]
when one of the options is selected the value will be foo
, bar
, baz
<option *ngFor="let item of items" [ngValue]="item">
{{item}}
</option>
using [ngValue]
when one of the options is selected the value will be 0: foo
, 1: bar
, 2: baz
ngValue is valuable when you need to bind to object in the object collection instead of string that is displayed by option element as an example as follows.
<select [(ngModel)]='selectedColor'>
<option *ngFor="let color of colors" [ngValue]="color" >{{color.name}}</option>
</select>
where
colors: [{code:'#FF0000', name:'Red'}, {code:'#00FF00', name:'Green'}, {code:'#0000FF', name:'Blue'}];
selectedColor is one of the color object above.