【问题标题】:how to get selected value of dropdown in reactive form如何以反应形式获取下拉列表的选定值
【发布时间】:2018-07-09 02:42:58
【问题描述】:

我正在尝试获取要在响应式表单提交时发送的更改事件下拉列表的选定值。根据how to get selected value of radio in reactive form的回答,我有一个非常相似的无线电工作场景@

这是下拉菜单的代码

<div class="row" *ngIf="question.controls.type.value === 'dropdown'">
   <div class="col-md-12">
    <div class="form-group__text select">
      <label for="type">{{ question.controls.label.value }}</label>
      <br><br>
      <select name="value" formArrayName="component" (change)="updateSelection(question.controls.component.controls, $event.target)">
        <option
          *ngFor="let answer of question.controls.component.controls; let j = index" [formGroupName]="j"
          [ngValue]="answer?.value?.value">
            {{answer?.value?.value}}
        </option>
      </select>
    </div>
  </div>
 </div>

在更改下拉列表中的选定选项时,我无法将答案作为 formcontrol 传递给 updateSelection。非常感谢任何帮助。

https://stackblitz.com/edit/angular-acdcac

【问题讨论】:

  • 你想要什么?你想得到哪个选项被选中?
  • 是的,阿伦!对于从下拉列表中选择的选项,我希望 selectedValue 为 true。

标签: angular-reactive-forms angular4-forms formarray formgroups


【解决方案1】:

与上一个问题非常相似,我们迭代数组中的表单控件,最初将全部设置为false,然后将选择的选项设置为true。所以模板让我们通过$event.target.value:

<select name="value" formArrayName="component" 
   (change)="updateSelection(question.controls.component.controls, $event.target.value)">
    <option *ngFor="let answer of question.controls.component.controls; let j = index" [formGroupName]="j"
       [ngValue]="answer?.value?.value">
       {{answer?.value?.value}}
  </option>
</select>

并且在我们提到的组件中迭代表单控件并将所有设置为false。 $event.target.value 的值将是字符串值,例如 Choice 1。然后我们搜索具有该值的表单控件,然后为该特定表单组设置布尔值:

updateSelection(formArr, answer) {
  formArr.forEach(x => {
    x.controls.selectedValue.setValue(false)
  })
  let ctrl = formArr.find(x => x.value.value === answer)
  ctrl.controls.selectedValue.setValue(true)
}

你的分叉StackBlitz

【讨论】:

  • 具有魅力!谢谢@Alex。它通过传递值来工作,因为我想知道是否必须传递表单控件而不是类似于收音机
猜你喜欢
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多