【问题标题】:Angular2 - Create array from multiple checkbox checked values in form for POST requestAngular2 - 从多个复选框检查值创建数组以用于 POST 请求
【发布时间】:2018-03-14 05:12:48
【问题描述】:

我目前有一个带有两个复选框的表单,对应于每个问题,我试图从所有选中的复选框中获取所有值并将它们存储到“答案”数组中。然后我将在我的 POST 请求中使用这个 answers 数组来将答案存储在我的数据库中。

虽然我无法实现这一点,但我的表单目前看起来像这样,选项动态来自我的数据库。

<form class="quiz-form">
   <div *ngFor="let option of quiz">

    <label> {{option.question}}: </label>

    <input type='checkbox' name='checkbox'/>
    <label>{{option.choice1}} </label>

    <input type='checkbox' name='checkbox'/>
    <label>{{option.choice2}} </label>

   </div
 <button type="submit" value="Submit"> Complete quiz </button>
</form>

谁能帮我实现这个目标?谢谢。

【问题讨论】:

  • 您可能不得不使用单选按钮?因为只有一个选择是正确的?或其可接受的用户可以检查单个问题的选择?

标签: angular checkbox angular2-forms angular2-services


【解决方案1】:

您可以在模板中执行以下操作:

<form class="quiz-form">
   <div *ngFor="let option of quiz">

     <label> {{option.question}}: </label>

    <input type='checkbox' name='{{option.choice1}}' value="{{option.choice1}}"  (change)="selectAnswer(option, $event)"/>
    <label>{{option.choice1}} </label>

    <input type='checkbox' name='{{option.choice2}}' value="{{option.choice2}}" (change)="selectAnswer(option, $event)"/>
    <label>{{option.choice2}} </label>
   </div>
 <button type="submit" value="Submit"> Complete quiz </button>
</form>

在组件文件中:

selectAnswer(category, event) {
        var index = this.answer.indexOf(event.target.value);
        if (event.target.checked) {
            this.answer.push(event.target.value);
         } else {
            if (index !== -1) {
                this.answer.splice(index, 1);
            }
        }
        console.log(this.answer);
    }

这是相同的plunkr

编辑

<form class="quiz-form" (ngSubmit)="submitForm()">
   <div *ngFor="let option of quiz">

     <label> {{option.question}}: </label>

    <input type='checkbox' name='{{option.choice1}}' value="{{option.choice1}}"  (change)="selectAnswer(option, $event)"/>
    <label>{{option.choice1}} </label>

    <input type='checkbox' name='{{option.choice2}}' value="{{option.choice2}}" (change)="selectAnswer(option, $event)"/>
    <label>{{option.choice2}} </label>
   </div>
 <button type="submit" value="Submit"> Complete quiz </button>
</form>

在组件 ts 文件中:

 submit(){
     this.answer=[];
   }

【讨论】:

  • 谢谢你这个工作,我如何在提交时清除数组?
  • this.answer=[];一样重置
  • 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2018-06-13
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 2019-11-23
相关资源
最近更新 更多