提交时处理Angular中多个复选框的最佳方法

菲利普·穆图阿

我实现了一个包含复选框和一个提交按钮的模式,如下所示。我想验证复选框,因为至少应从复选框中选择一项,并且仅发送选定的项,而不是全部发送。当我提交项目时,我将发送不想要的所有内容。

屏幕截图

在此处输入图片说明

TS文件

...

    this.form = this.fb.group({
      checkArray: this.fb.array([], [Validators.required])
    });


  }

  ngOnInit() {

    this.getAllRemarks();

    this.myform = this.fb.group({

      otherInput: null,

      // API key to bind list of items. e.g. [{id:1},{id:2}]
      reason: null
    });
  }


  onClose() {
    this.dialogbox.close();
    this.dataService.filter('Register click');

  }





  onCheckBoxChanges(e: HTMLInputElement, id: number) {
    // get current position of the changes element by ID
    const index = this.remarksList.findIndex(_ => _.id === id);
    if (!(index > -1)) return;

    // const isChecked = this.checkBoxes[index].isChecked;
    // this.masterCheckBoxes[index].isChecked = e.checked;
  }

  onSubmit() {
    // assign the changes value for the POST
    this.myform.value['reason'] = this.remarksList;

    console.log(this.myform.value);




  }

...

HTML文件

<h2>Add Comments</h2>
<p>Reasons for declining the inspection</p>
<form [formGroup]="myform" (ngSubmit)="onSubmit()">

  <div *ngFor="let check of this.remarksList;">
    <label>
      <input #el (change)="onCheckBoxChanges(el, check.id)" type="checkbox" [checked]="check.isChecked" />
      {{check.comment}}
    </label>
  </div>

  <br> <br>
  Other: <input type="text" formControlName="otherInput" />

  <br> <br>
  <button type="submit">Submit</button>
</form>
拉哈什普里

为了根据需要验证formGroup,我们可以设置userDefined验证器。在这里,我使用了requireCheckboxesValidator()作为自定义验证器。这可能有效

     myCheckboxGroup: new FormGroup({
           myCheckbox1: new FormControl(false),
           myCheckbox2: new FormControl(false),
         }, requireCheckboxesValidator());


     export function requireCheckboxesValidator(minRequired = 1): ValidatorFn {
       return function validate (formGroup: FormGroup) {
         let checked = 0;
         Object.keys(formGroup.controls).forEach(key => {
           const control = formGroup.controls[key];
           if (control.value === true) {
             checked ++;
           }
         });
         if (checked < minRequired) {
           return {
             requireOneCheckboxToBeChecked: true,
           };
         }return null;
       };
     }

在提交时,您可以使用过滤器仅获取选定的值

    onSubmit() {
      // assign the changes value for the POST
      this.myform.value['reason'] = this.remarksList.filter(item => item.isChecked);
      console.log(this.myform.value);
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular中的多个复选框

来自分类Dev

如何处理 c# MVC 实体框架中的多个提交按钮和复选框?

来自分类Dev

如何在提交时验证多个复选框?

来自分类Dev

如何在提交时验证多个复选框?

来自分类Dev

jqgrid中的多个复选框列。处理onchange事件

来自分类Dev

处理EXPO React Native中的多个复选框

来自分类Dev

在Ember.js中处理多个复选框数组

来自分类Dev

提交多个复选框到Firebase

来自分类Dev

提交多个复选框到Firebase

来自分类Dev

选中多个列表中的复选框时选择所有复选框

来自分类Dev

将多个条件应用于Angular 8应用中的复选框时发生

来自分类Dev

iOS-处理多个复选框

来自分类Dev

如何在Angular中接受多个选中的复选框?

来自分类Dev

在Laravel中处理复选框输入

来自分类Dev

处理联系表格中的复选框

来自分类Dev

处理硒中的复选框

来自分类Dev

使用 Angular 2 反应形式通过单个复选框提交多个值

来自分类Dev

多个复选框的CheckedChange方法

来自分类Dev

多个复选框

来自分类Dev

Android中的多个复选框

来自分类Dev

在AlertDialog中引用多个复选框

来自分类Dev

在复选框中接受多个值

来自分类Dev

获取表单提交时所有p复选框的状态(Angular PrimeNG)

来自分类Dev

收集 PHP 中多个复选框的值(2 个以相同形式提交?)

来自分类Dev

表单提交带有多个复选框-Codeigniter

来自分类Dev

禁用提交按钮,直到选中多个复选框

来自分类Dev

多个复选框一键提交php表单

来自分类Dev

选中表单中的任何/没有复选框时,启用/禁用提交按钮

来自分类Dev

如何在Rails 4中选中复选框的值时提交表单?