【问题标题】:i want to uncheck a checkbox on remove filed using splice我想取消选中使用拼接删除提交的复选框
【发布时间】:2020-12-09 09:43:00
【问题描述】:

这是我的 html 文件: 我从 api 得到的条款。 选中复选框时,它将在 selectedTermsArray 中显示所选值。

 <span class="suggestermsSpan" >Suggested terms </span> <br>
    <div *ngFor="let list of TermsArray" >      
       <input name="checkboxName" class="checkmark" id="checkbox1" type="checkbox" value="{{list.Name}}" (change)="$event.target.checked? (isfrmChecked = true) : isfrmChecked = false; onCheckboxSelected($event,isfrmChecked);">
         {{list.Name}}
    </div>
</div>

这也是我的html文件:

在上述 html 代码的复选框选择中选择的术语。 当我单击删除字段值关闭图标时。从 selectedtermsArray 中删除值。 但是,复选框并没有被取消选中。

<div>
   <div *ngFor="let selectedValue of selectedTermsArray ; let i = index" ">     
      
     <span>{{selectedValue}}</span>

                                       
   </div>
</div>


这是我的 ts 文件..


 selectedTermsArray: string[] = [];
 isfrmChecked:any;

 onCheckboxSelected(event: any, isChecked: boolean)
 {
   if (isChecked) {
     this.selectedTermsArray.push(event.target.value);
   }
   else {
     let index = this.selectedTermsArray.indexOf(event.target.value);
     this.selectedTermsArray.splice(index, 1);
   }
 }

 removeField(index) {
         this.selectedTermsArray.splice(index, 1);
 }

【问题讨论】:

  • “incentiveTermsArray”中的复选框没有被取消选中?

标签: angular checkbox checked unchecked


【解决方案1】:

您需要在从selectedTermsArray 数组中删除项目时处理复选框状态。

更新您的输入复选框,如下所示。添加了ngModel 来维护复选框的状态并将onChange 事件替换为ngModelChange

<div *ngFor="let list of TermsArray">
    <input
      name="checkboxName"
      class="checkmark"
      id="checkbox1"
      type="checkbox"
      value="{{list.Name}}"
      [(ngModel)]="list.isChecked"
      (ngModelChange)="onModelChange($event,list.Name)"
    />
    {{list.Name}}
</div>

您的onModelChange 函数如下所示。

onModelChange(isChecked, value) {
    if (isChecked) {
      this.selectedTermsArray.push(value);
    } else {
      let index = this.selectedTermsArray.indexOf(value);
      this.selectedTermsArray.splice(index, 1);
    }
}

然后在从下面删除项目时,像这样更新主数组复选框状态。

removeField(index, value) {
    this.selectedTermsArray.splice(index, 1);
    this.TermsArray.map((x) => {
      if (x.Name === value) {
        x.isChecked = false;
      }
    });
}

工作代码和框:-

https://codesandbox.io/s/checkbox-relationship-lc7q2?file=/src/app/app.component.ts

【讨论】:

  • 是的,请检查link 只需在复选框周围放置一个包装器并使用带有 isChecked 属性的 [hidden] 属性。
猜你喜欢
  • 2014-07-06
  • 2014-11-19
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2017-08-31
  • 1970-01-01
相关资源
最近更新 更多