使用 API 和 ngModel 从服务中检索数据时,我的复选框值不会在单击时取消选中

My checkbox value is not getting unchecked on click while retrieving data from service using API and ngModel

这是我的代码.. 在编辑页面上,我正在使用 ngModel 从服务中检索数据。 我的 sql table 有四列:规则名称、Delaer_Id、类型和状态。 我正在尝试使用 api 服务验证表单和更新记录,代码如下。我不想验证状态复选框。 我只想通过取消选中复选框将状态复选框值更改为“N”。 单击复选框时,值 N 会反映在控制台中。 但是,复选框并没有被取消选中。它仅保持选中状态。 我希望它像它的值一样在 onclickk 上切换(如果是“Y”则选中,如果“N”则取消选中)。

HTML 文件

 <form [formGroup]="addTermForm">
             
                       <div class="col-sm-12">  
                        <label style="padding-left: 6px;">Status:</label>
                        <span style="padding-left: 10px;"></span>  
                        <input type="checkbox" formControlName="Status"
           (change)="statusValueChange($event)" style="margin-left: 10px;" [(ngModel)]="termDetails.Status"
          [ngClass]="{'is-invalid': submitted && addTermForm.get('Status').errors}">                        
                    

                     </div>
                          
                      
         </form>

TS 文件

 
   statusValueChange($event: any) {
    this.addTermForm.controls['Status'].setValue($event.target.checked ? 'Y' : 'N');
    console.log('form values:', this.addTermForm.value);
  }

从您的复选框中删除以下属性,它将起作用。

formControlName="Status"
[(ngModel)]="termDetails.Status"

当您手动更新表单值时,您不需要这个。

编辑时根据值显示check/uncheck。你可以在下面做。

 [checked]="myForm.get('Status').value == 'Y'"

使用选中的属性,当您收到编辑数据时更新字段值,如下所示。

this.myForm.get("Status").setValue("Y");