Angular 2:如何从表单的不同选项中获取所选值?

时间:2016-01-22 15:26:03

标签: forms html-select angular angular-ngmodel angular2-forms

我想在表单中使用<select>让用户能够更新不同<option>之间的值。我使用了指南中的技术:https://angular.io/docs/ts/latest/guide/forms.html。以下是我所说的样本:

<div class="form-group">
    <label for="type">Type :</label>
    <select class="form-control" [(ngModel)]="order.type" ngControl="type">
        <option *ngFor="#type of types" [value]="type">{{type}}</option>
    </select>
</div>

在我的order-details.component中,我有一个updateOrder(),它从myApp.services调用updateOrder()。

我的问题是当我尝试将数据从表单发送到后端时:所有带<input>的部分都可以,但不是<select>的部分(它返回原始部分)值,而不是选定的值。

有没有人遇到过这个或类似的问题? 谢谢你的帮助!

4 个答案:

答案 0 :(得分:22)

有一种方法可以从不同的选项中获取值。 检查此plunker

component.html

 <select class="form-control" #t (change)="callType(t.value)">
      <option *ngFor="#type of types" [value]="type">{{type}}</option>
    </select>

component.ts

this.types = [ 'type1', 'type2', 'type3' ];
   this.order = {
      type: 'type1'          
  };  

  callType(value){
    console.log(value);
    this.order.type=value;
  }

答案 1 :(得分:4)

已经解决了这个问题几个小时了。

选中(不完整)文档,在NgSelectOption页面中查找名为“ngValue”的项目

不确定这是否是预期用途,但似乎工作正常。

所以不要使用

[value]="item"

使用:

[ngValue]="item"

如果你想在更改时做某事,只需在select和ngModelChange事件上使用ngModel。

答案 2 :(得分:1)

事实上我无法重现你的问题。我用一个非常简单的形式创建了一个带有inputselect的plunkr。当我提交表单时,我在绑定对象中有实际值。请参阅此plunkr:https://plnkr.co/edit/5C3agW7QZfcrdt88QzSh?p=preview

如果我没有正确理解您的问题,请随时告诉我。

亨利

答案 3 :(得分:0)

如果您的select标签具有静态的硬编码值,如下所示:

<select #quantity>
  <option value="one">1</option>
  <option value="two">2</option>
  <option value="three">3</option>
  <option value="four">4</option>
  <option value="five">5</option>
</select>

您可以执行以下操作:

@ViewChild('quantity') quantity: ElementRef;

console.log(this.quantity.nativeElement.value);  // will print value of the currently selected option