在复选框选择角度和 web api 后删除多条记录中的问题 [英] Issue in Delete multiple records after checbox selection angular and web api

查看:15
本文介绍了在复选框选择角度和 web api 后删除多条记录中的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在此代码正在删除单个选定的记录,但无法删除多个记录.是否可以删除多个选定的记录?

组件 HTML

<!-- <app-spinner></app-spinner>--><div class="main"><app-titlebar [componentName]=componentName"></app-titlebar><div class="recordsWithSearchFilters"><div *ngIf='isRecordsFound == false' class="recordsCounter leftControl">未找到记录!</div><div *ngIf='isRecordsFound == true' class="recordsCounter leftControl">显示 1 到 {{employees.length}}(出{{employees.length}})

<app-employees-filters *ngIf='isRecordsFound == true ||isFiltersApplied == true'(moveFilteredRecordsToList)=moveFilteredRecordsToList($event)";(detectClearFillterInRecordsList)=detectClearFillterInRecordsList($event)"></app-employees-filters>

<div *ngIf='isRecordsFound == true'><table class="table table-striped"><头><th style="width:30px;min-width:30px;";class =masterCheck"><div class="custom-control custom-checkbox"><输入类型=复选框"类=自定义控制输入"id="masterCustomCheck"名称=masterChk"[检查]=isAllCheckBoxChecked()";(change)="checkAllCheckBox($event)"><label class="custom-control-label";for=masterCustomCheck">

</th><th style="width:32px">Photo</th><th style="min-width:150px;">全名</th><th style="width:80px;">Gender </th><th style="min-width:250px">指定</th><th style="width:150px;">部门</th><th style="min-width:100px;">创建日期</th><th style="width:100px;">Status</th><th style="min-width:90px;"></th></tr></thead><tbody id="results"><tr *ngFor="让雇员的雇员;让我=指数;让奇数 = 奇数"[ngClass]=奇数?'odd_col' : 'even_col'"><!-- <td>{{employee.id}}</td>--><td><div class="custom-control custom-checkbox"><输入类型=复选框"类=自定义控制输入"[id]="'customCheck'+i";值={{employee.id}}";[(ngModel)]=employees[i].checked";(ngModelChange)=已更改()"><label class="custom-control-label";[for]="'customCheck'+i"></label>

</td><td><div *ngIf='employee.thumbnail != ""'class =img-thumbnail rowThumbnail"><img src='http://localhost/CorePathLaboratories/uploads/employee/{{employee.thumbnail}}'[alt]=employee.fullName">

<div *ngIf='employee.thumbnail == ""'class =img-thumbnail rowThumbnail"><div class="shortName"样式=背景颜色:rgb(117, 117, 117);">{{employee.shortName |大写}}

</td><td>{{employee.fullName}}</td><td>{{employee.gender == '0' ?女":"男"}}</td><td>{{employee.designation}}</td><td>{{employee.department}}</td><td>{{employee.dateCreated}}</td><td><span class="label roundLabels";[class]="employee.status == '0' ?'label-danger' : 'label-success'>{{ 员工状态 == '0' ?不活动":主动"}}</span></td><a data-toggle=modal"数据目标=#detailModal";class="icon icon-Detail-15 viewControl";[id]='employee.id'(click)=detailRecord($event)"></a><a data-toggle=modal"数据目标=#editModal";class="icon icon-Edit-14 editControl";[id]='employee.id'(click)=updateRecord($event)"></a><a class="icon icon-Delete-27 deleteControl";[id]='employee.id'(点击)=deleteRecord($event)"></a></td></tr></tbody>{{错误}}<按钮类型=按钮"class="btn btn-default";(click)=deleteProducts()">({{count}}) Delete Selected<div style="display:none;"><form (ngSubmit)="deleteSelectedRecords()";[formGroup]=selectedRowsForm";*ngIf=selectedRowsForm"><输入类型=文本"[值]=selectedRows";formControlName="selectedItems";[(ngModel)]=selectedRows";class="allselectedRecords"><按钮数据切换=模态"数据目标=#deleteModal";class="btn btn-primary sendSelectedRowsBtn";type="submit">Submit</button></表单><!-- <pre>{{selectedRowsForm.value |json}}</pre><pre>{{selectedRowsForm.status}}</pre>-->

<!-- <button type="button";(click)=deleteProducts()">Delete Selected Product(s)</button>--><!-- <a class="btn btn-danger"><span class="selectedRecords"style="margin-right:5px;">0</span>Delete Selected</a>-->

<!-- 详细信息弹出窗口--><div class="modal";id=detailModal"角色=对话"><div class="modal-dialog modal-dialog-center modal-md";角色=文档"><div class="modal-content"><div class="modal-header"><h5 class="modal-title";id="exampleModalLongTitle">详细信息</h5><按钮类型=按钮"类=关闭"数据关闭=模态"aria-label=关闭"><span aria-hidden="true">&times;</span>

<div class="modal-body"><div style="margin:0 auto"><div *ngIf="employeesDetail == 0;else elseBlockShow"class='text-center'><imgsrc=../../../../assets/images/loading.svg">

<ng-template style="text-align:center";类=modalBody"#elseBlockShow><div *ngIf='employeesDetail.photo'><div class="detailPageHeader";style="padding-bottom:0;">

<div class="employeePhotoPlacementInner"><img src="http://localhost/CorePathLaboratories/uploads/employee/{{employeesDetail.photo}}";类=imgOnly"style="max-width:92px;最大高度:92px"/>

<div class="fullWidth text-left"><div style=display:none;>记录 ID:+{{employeesDetail.id}}</div><h6 class="text-center">{{employeesDetail.fullName}}({{employeesDetail.department}}/{{employeesDetail.designation}})</h6><ul class="labelsAndValues list-unstyled top-bottom-border";style="margin-bottom:0;"><li><label class="labels">创建时间:</label><spanclass="values">{{employeesDetail.dateCreated}}</span></li><li><label class="labels">Gender:</label><span class="values">{{employeesDetail.gender}}</span></li><li><label class="labels">Status: </label><span class="values">{{employeesDetail.status}}</span></li><div class="fullWidth"><div class="description";*ngIf='employeesDetail.detail'>{{employeesDetail.detail}}

</ng-模板>

<div class="modal-footer"><按钮类型=按钮"class =btn btn-secondary"data-dismiss=modal">Close</button>

<!-- 编辑弹出窗口--><div class="modal"id="editModal"角色=对话"><div class="modal-dialog modal-dialog-center modal-md";角色=文档"><div class="modal-content"><div class="modal-header"><h5 class="modal-title";id="exampleModalLongTitle">编辑</h5><按钮类型=按钮"类=关闭"数据关闭=模态"aria-label=关闭"><span aria-hidden="true">&times;</span>

<form (ngSubmit)="onSubmit()";[formGroup]="updateEmpForm";*ngIf=updateEmpForm"><div class="modal-body"><div *ngIf='successMsg' class="alert alert-success">{{successMsg}}</div><div *ngIf='errorMsg' class="alert alert-danger">{{errorMsg}}</div><div *ngIf='updateEmpForm.status == "INVALID"'class="alert alert-danger removeThis">所有字段都是必需的!</div><div style="margin:0 auto"><div *ngIf="employeesDetail == 0";class='text-center'>

<div *ngIf="employeesDetail";style="text-align:center"><div class="row">

<div class="form-group"><输入类型=隐藏"formControlName=id"[(ngModel)]=employeesDetail.id";[value]=employeesDetail.id"><label>全名</label><输入类型=文本"类=表单控制"[(ngModel)]=employeesDetail.fullName"formControlName=全名"[value]=employeesDetail.fullName"(blur)=onblur($event)"><div *ngIf="updateEmpForm.controls['fullName'].invalid";class="validationErrors"><!-- 不需要使用脏检查和接触检查,因为字段已经有值-->全名是必需的.

<div class="form-group"><label>性别</label><select class="form-control";[(ngModel)]=employeesDetail.gender"formControlName=性别"[value]=employeesDetail.gender"><option value="">选择一个</option><选项值=1"[选择]=employeesDetail.gender == 1 ?'选择' : ''">男性</option><选项值=0"[选择]=employeesDetail.gender == 0?'selected' : ''">Female</option></选择><div *ngIf="updateEmpForm.controls['gender'].invalid";class="validationErrors"><!-- 不需要使用脏检查和接触检查,因为字段已经有值-->性别是必需的.

<div class="form-group"><label>部门</label><输入类型=文本"类=表单控制"[(ngModel)]=employeesDetail.department";formControlName=部门"[value]=employeesDetail.department"><div *ngIf="updateEmpForm.controls['department'].invalid";class="validationErrors"><!-- 不需要使用脏检查和接触检查,因为字段已经有值-->部门是必需的.

<div class="form-group"><label>名称</label><输入类型=文本"类=表单控制"[(ngModel)]=employeesDetail.designation"formControlName=指定"[value]=employeesDetail.designation"><div *ngIf="updateEmpForm.controls['designation'].invalid";class="validationErrors"><!-- 不需要使用脏检查和接触检查,因为字段已经有值-->需要指定.

<div class="form-group"><标签>照片</标签><div class="form-control formControlOverInPutTypeFile"><输入类型=文件"class="inputTYPEFile float-left";(change)="changeListener($event)";接受=.png、.jpg、.jpeg、.pdf"><div *ngIf='employeesDetail.photo' class="imgViewerInFormControlArea"><div class="imgViewerInFormControl">

<div class="form-group"><label>状态</label><select class="form-control";[(ngModel)]=employeesDetail.status";formControlName=状态"[value]=employeesDetail.status"><option value="">选择一个</option><选项值=1"[选择]=employeesDetail.status == 1 ?'selected' : ''">Active</option><选项值=0"[选择]=employeesDetail.status == 0 ?'selected' : ''">Inactive</option></选择><div *ngIf="updateEmpForm.controls['status'].invalid";class="validationErrors"><!-- 不需要使用脏检查和接触检查,因为字段已经有值-->状态为必填项.

<div class="form-group"><label>细节</label><editor [(ngModel)]="employeesDetail.detail";formControlName=详细信息"[初始化]={高度:280,菜单栏:假,插件: ['advlist 自动链接列表链接图像charmap 打印预览锚','searchreplace visualblocks 代码全屏','插入日期时间媒体表粘贴代码帮助字数','advlist 自动链接链接图像列表 charmap 打印预览'],工具栏:'table fontsizeselect 粗斜体下划线前景色背景色 Bullist numlist 链接预览代码',imagetools_toolbar: '旋转左旋转右 |翻转翻转|编辑图像',品牌:假的,语言:'en'}></编辑器>

<div class="modal-footer"><a class="btn btn-secondary";数据关闭=模态"(click)=resetAll()">关闭</a><按钮类型=提交"类=btn btn-primary";[禁用]=!updateEmpForm.valid">更新</button>

</表单><!-- <pre>{{updateEmpForm.value |json}}</pre>--><!-- <pre>{{updateEmpForm.status}}</pre>-->

<!-- 删除弹出窗口--><div class="modal";id=deleteModal"角色=对话"><div class="modal-dialog modal-dialog-center modal-md";角色=文档"><div class="modal-content"><div class="modal-body";style="padding-bottom:15px"><div style="margin:0 auto"><div *ngIf='successMsg != ""'class='文本中心'><img style="height:24px;宽度:24px;右边距:7px"src=../../../../assets/images/loading.svg">请稍等

组件打字稿checkAllCheckBox(ev:any) {this.employees.forEach(x => x.checked = ev.target.checked)}isAllCheckBoxChecked() {return this.employees.every(employee =>employee.checked);}删除产品():无效{const selectedProducts = this.employees.filter(employee =>employee.checked).map(employee =>employee.id);//console.log (selectedProducts);if(selectedProducts && selectedProducts.length > 0) {this.employeeservice.deleteProducts(selectedProducts).subscribe(res => {this.clss = 'grn';this.msg = '产品删除成功';}, 错误 =>{this.clss = 'rd';this.msg = '删除产品时出错';});} 别的 {this.clss = 'rd';this.msg = '您必须至少选择一种产品';}}服务打字稿deleteProducts(ids: number[]) {if (confirm("Are you sure to delete?")) {常量数据 = ids;返回 this.http.get

解决方案

要一次性删除多个 ID,您必须公开一个接受多个 ID 的 API(可能作为 POST 主体)

然后而不是调用

返回 this.http.get(this.serverUrl + 'delete/' + data)

你可以打电话

return this.http.get(this.serverUrl + 'deleteBatch/', {ids: ids})

在后端,您可能希望从 POST 正文中读取 ID 并根据该 ID 进行删除

$data = json_decode(file_get_contents('php://input'), true);$ids = $data->ids//删除每一项

Right now this code is deleting single selected record, but unable to delete multiple records. Is there away to delete multiple selected records?

Component Html


    <!-- <app-spinner></app-spinner> -->
<div class="main">
  <app-titlebar [componentName]="componentName"></app-titlebar>
  <div class="recordsWithSearchFilters">
    <div *ngIf='isRecordsFound == false' class="recordsCounter leftControl">No records found!</div>
    <div *ngIf='isRecordsFound == true' class="recordsCounter leftControl">Showing 1 to {{employees.length}} 
      (out of {{employees.length}})
    </div>

    <app-employees-filters *ngIf='isRecordsFound == true || isFiltersApplied == true'
      (moveFilteredRecordsToList)="moveFilteredRecordsToList($event)"
      (detectClearFilllterInRecordsList)="detectClearFilllterInRecordsList($event)">
    </app-employees-filters>
  </div>

  <div *ngIf='isRecordsFound == true'>
    <table class="table table-striped">
      <thead>
        <tr class="trWithSorting">
          <th style="width:30px;min-width:30px;" class="masterCheck">
            <div class="custom-control custom-checkbox">
              <input type="checkbox" class="custom-control-input" 
              id="masterCustomCheck" name="masterChk" [checked]="isAllCheckBoxChecked()" (change)="checkAllCheckBox($event)">
              <label class="custom-control-label" for="masterCustomCheck"></label>
            </div>
          </th>
          <th style="width:32px">Photo</th>
          <th style="min-width:150px;">Full Name</th>
          <th style="width:80px;">Gender </th>
          <th style="min-width:250px">Designation </th>
          <th style="width:150px;">Department </th>
          <th style="min-width:100px;">Created Date</th>
          <th style="width:100px;">Status</th>
          <th style="min-width:90px;"></th>
        </tr>
      </thead>
      <tbody id="results">
        
        <tr *ngFor="let employee of employees; let i=index; let odd = odd" [ngClass]="odd ? 'odd_col' : 'even_col'">
          <!-- <td>{{employee.id}}</td> -->
          <td>
            <div class="custom-control custom-checkbox">
                <input type="checkbox" class="custom-control-input" 
                [id]="'customCheck'+i" value="{{employee.id}}" [(ngModel)]="employees[i].checked" (ngModelChange)="changed()">
                <label class="custom-control-label" [for]="'customCheck'+i"></label>
            </div>
          </td>
          <td>
            <div *ngIf='employee.thumbnail != ""' class="img-thumbnail rowThumbnail">
              <img src='http://localhost/CorePathLaboratories/uploads/employee/{{employee.thumbnail}}'
                [alt]="employee.fullName">
            </div>
            <div *ngIf='employee.thumbnail == ""' class="img-thumbnail rowThumbnail">
              <div class="shortName" style="background-color: rgb(117, 117, 117);">
                {{employee.shortName | uppercase}}
              </div>
            </div>
          </td>
          <td>{{employee.fullName}}</td>
          <td>{{employee.gender == '0' ? "Female" : "Male"}}</td>
          <td>{{employee.designation}}</td>
          <td>{{employee.department}}</td>
          <td>{{employee.dateCreated}}</td>
          <td>
            <span class="label roundLabels" [class]="employee.status == '0' ? 'label-danger' : 'label-success'">
              {{ employee.status == '0' ? "Inactive" : "Active" }}
            </span>
          </td>
          <td class="actionControls">
            <a data-toggle="modal" data-target="#detailModal" class="icon icon-Detail-15 viewControl" [id]='employee.id'
              (click)="detailRecord($event)"></a>

            <a data-toggle="modal" data-target="#editModal" class="icon icon-Edit-14 editControl" [id]='employee.id'
              (click)="updateRecord($event)"></a>
            <a class="icon icon-Delete-27 deleteControl" [id]='employee.id' (click)="deleteRecord($event)"></a>
          </td>
        </tr>
        
      </tbody>
    </table>

    {{error}}

   
      <button type="button" class="btn btn-default" (click)="deleteProducts()">({{count}}) Delete Selected</button>
      <div style="display:none;">
        <form (ngSubmit)="deleteSelectedRecords()" [formGroup]="selectedRowsForm" *ngIf="selectedRowsForm">
        <input type="text" [value]="selectedRows" 
        formControlName="selectedItems" [(ngModel)]="selectedRows" class="allselectedRecords">
        <button data-toggle="modal" data-target="#deleteModal" 
        class="btn btn-primary sendSelectedRowsBtn" type="submit">Submit</button>
      </form>
      <!-- <pre>{{selectedRowsForm.value | json}}</pre>
      <pre>{{selectedRowsForm.status}}</pre> -->
     </div>

      <!-- <button type="button" (click)="deleteProducts()">Delete Selected Product(s)</button> -->
      <!-- <a class="btn btn-danger"><span class="selectedRecords"  style="margin-right:5px;">0</span>Delete Selected</a> -->
</div>



<!-- Detail Popup -->
<div class="modal" id="detailModal" role="dialog">
  <div class="modal-dialog modal-dialog-centered modal-md" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLongTitle">Details</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <div style="margin:0 auto">

          <div *ngIf="employeesDetail == 0; else elseBlockShow" class='text-center'><img
              src="../../../../assets/images/loading.svg">
          </div>
          <ng-template style="text-align:center" class="modalBody" #elseBlockShow>
            <div *ngIf='employeesDetail.photo'>
              <div class="detailPageHeader" style="padding-bottom:0;">
                <div class="employeePhotoPlacement">
                  <div class="employeePhotoPlacementInner">
                    <img src="http://localhost/CorePathLaboratories/uploads/employee/{{employeesDetail.photo}}"
                      class="imgOnly" style="max-width:92px; max-height:92px" />
                  </div>
                </div>
              </div>
            </div>

            <div class="fullWidth text-left">
              <div style=display:none;>Record Id: +{{employeesDetail.id}}</div>
              <h6 class="text-center">{{employeesDetail.fullName}}
                ({{employeesDetail.department}}/{{employeesDetail.designation}})</h6>
              <ul class="labelsAndValues list-unstyled top-bottom-border" style="margin-bottom:0;">
                <li><label class="labels">Created On: </label><span
                    class="values">{{employeesDetail.dateCreated}}</span></li>
                <li><label class="labels">Gender: </label><span class="values">{{employeesDetail.gender}}</span></li>
                <li><label class="labels">Status: </label><span class="values">{{employeesDetail.status}}</span></li>
              </ul>
              <div class="fullWidth">
                <div class="description" *ngIf='employeesDetail.detail'>
                  {{employeesDetail.detail}}
                </div>
              </div>
            </div>
          </ng-template>
        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>

  </div>
</div>



<!-- Edit Popup -->
<div class="modal" id="editModal" role="dialog">
  <div class="modal-dialog modal-dialog-centered modal-md" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLongTitle">Edit</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <form (ngSubmit)="onSubmit()" [formGroup]="updateEmpForm" *ngIf="updateEmpForm">
        <div class="modal-body">

        <div *ngIf='successMsg' class="alert alert-success">{{successMsg}}</div>
        <div *ngIf='errorMsg' class="alert alert-danger">{{errorMsg}}</div>
        <div *ngIf='updateEmpForm.status == "INVALID"' class="alert alert-danger removeThis">All fields are required!</div>

          <div style="margin:0 auto">

            <div *ngIf="employeesDetail == 0" class='text-center'><img src="../../../../assets/images/loading.svg">
            </div>

            <div *ngIf="employeesDetail" style="text-align:center">
              <div class="row">
                <div class='col-md-6'>
                  <div class="form-group">
                    <input type="hidden" formControlName="id" [(ngModel)]="employeesDetail.id" [value]="employeesDetail.id">
                    <label>Full Name</label>
                    <input type="text" class="form-control" [(ngModel)]="employeesDetail.fullName"
                      formControlName="fullName" [value]="employeesDetail.fullName" (blur)="onblur($event)">
                      
                      <div *ngIf="updateEmpForm.controls['fullName'].invalid" class="validationErrors">
                        <!-- No nned to use dirty and touched checks, bacause fields already have values -->
                        Full Name is required.
                      </div>
                  </div>
                </div>
                <div class='col-md-6'>
                  <div class="form-group">
                    <label>Gender</label>
                    <select class="form-control" [(ngModel)]="employeesDetail.gender" formControlName="gender"
                      [value]="employeesDetail.gender">
                      <option value="">Select One</option>
                      <option value="1" [selected]="employeesDetail.gender == 1 ? 'selected' : ''">Male</option>
                      <option value="0" [selected]="employeesDetail.gender == 0 ? 'selected' : ''">Female</option>
                    </select>
                    
                    <div *ngIf="updateEmpForm.controls['gender'].invalid" class="validationErrors">
                      <!-- No nned to use dirty and touched checks, bacause fields already have values -->
                      Gender is required.
                    </div>
                  </div>
                </div>

                <div class='col-md-6'>
                  <div class="form-group">
                    <label>Department</label>
                    <input type="text" class="form-control" [(ngModel)]="employeesDetail.department"
                      formControlName="department" [value]="employeesDetail.department">
                      
                      <div *ngIf="updateEmpForm.controls['department'].invalid" class="validationErrors">
                        <!-- No nned to use dirty and touched checks, bacause fields already have values -->
                        Department is required.
                      </div>
                  </div>
                </div>
                <div class='col-md-6'>
                  <div class="form-group">
                    <label>Designation</label>
                    <input type="text" class="form-control" [(ngModel)]="employeesDetail.designation"
                      formControlName="designation" [value]="employeesDetail.designation">
                    
                      <div *ngIf="updateEmpForm.controls['designation'].invalid" class="validationErrors">
                        <!-- No nned to use dirty and touched checks, bacause fields already have values -->
                        Designation is required.
                      </div>
                  </div>
                </div>

                <div class='col-md-6'>
                  <div class="form-group">
                    <label>Photo</label>
                    <div class="form-control formControlOverInPutTypeFile">
                      <input type="file" class="inputTYpeFile float-left"
                        (change)="changeListener($event)" accept=".png, .jpg, .jpeg, .pdf">
                      <div *ngIf='employeesDetail.photo' class="imgViewerInFormControlArea">
                        <div class="imgViewerInFormControl">
                          <img
                            src="http://localhost/CorePathLaboratories/uploads/employee/{{employeesDetail.thumbnail}}"
                            class="imgOnly" />
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
                <div class='col-md-6'>
                  <div class="form-group">
                    <label>Status</label>
                    <select class="form-control" [(ngModel)]="employeesDetail.status" formControlName="status"
                      [value]="employeesDetail.status">
                      <option value="">Select One</option>
                      <option value="1" [selected]="employeesDetail.status == 1 ? 'selected' : ''">Active</option>
                      <option value="0" [selected]="employeesDetail.status == 0 ? 'selected' : ''">Inactive</option>
                    </select>
                    <div *ngIf="updateEmpForm.controls['status'].invalid" class="validationErrors">
                      <!-- No nned to use dirty and touched checks, bacause fields already have values -->
                      Status is required.
                    </div>
                  </div>
                </div>

                <div class='col-md-12'>
                  <div class="form-group">
                    <label>Detail</label>
                      <editor [(ngModel)]="employeesDetail.detail" formControlName="detail" [init]="{
                        height: 280,
                        menubar: false,
                        plugins: [
                        'advlist autolink lists link image charmap print preview anchor',
                        'searchreplace visualblocks code fullscreen',
                        'insertdatetime media table paste code help wordcount',
                        'advlist autolink link image lists charmap print preview'
                      ],
                      toolbar:
                      'table fontsizeselect bold italic underline forecolor backcolor bullist numlist link preview code',
                      imagetools_toolbar: 'rotateleft rotateright | flipv fliph | editimage',
                      branding: false,
                      language: 'en'
                      }">
                    </editor>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
        <div class="modal-footer">
          <a class="btn btn-secondary" data-dismiss="modal" (click)="resetAll()">Close</a>
          <button type="submit" class="btn btn-primary" [disabled]="!updateEmpForm.valid">Update</button>
        </div>
      </form>

      <!-- <pre>{{updateEmpForm.value | json}}</pre> -->
      <!-- <pre>{{updateEmpForm.status}}</pre> -->
    </div>

  </div>
</div>



<!-- Delete Popup -->
<div class="modal" id="deleteModal" role="dialog">
  <div class="modal-dialog modal-dialog-centered modal-md" role="document">
    <div class="modal-content">
      <div class="modal-body" style="padding-bottom:15px">
        <div style="margin:0 auto">

          <div *ngIf='successMsg != ""' class='text-center'>
            <img style="height:24px; width:24px; margin-right:7px" src="../../../../assets/images/loading.svg">
            Please Wait
          </div>
        </div>
      </div>
    </div>

  </div>
</div>


Component Typescript

checkAllCheckBox(ev:any) {
        this.employees.forEach(x => x.checked = ev.target.checked)
    }

    isAllCheckBoxChecked() {
        return this.employees.every(employee => employee.checked);
    }

    deleteProducts(): void {
            const selectedProducts = this.employees.filter(employee => employee.checked).map(employee => employee.id);
            //console.log (selectedProducts);
            
            if(selectedProducts && selectedProducts.length > 0) {
                this.employeeservice.deleteProducts(selectedProducts)
                    .subscribe(res => {
                        this.clss = 'grn';
                        this.msg = 'Products successfully deleted';
                        }, err => {
                            this.clss = 'rd';
                            this.msg = 'Something went wrong during deleting products';
                        }
                    );
            } else {
                this.clss = 'rd';
                this.msg = 'You must select at least one product';
            }
      }



Service typescript
   

     deleteProducts(ids: number[]) {
              if (confirm("Are you sure to delete?")) {
              const data = ids;
                  return this.http.get<any>(this.serverUrl + 'delete/' + data)
                .pipe( // used to combine functions in one function
                  catchError(this.handleError)
                );
              }
              return of({});
          }


Web APi Controller

```php
    public function delete($id)
        {
            $response = array();
            
              $this->load->model('employee_mod');
              $reponseFromModel = $this->employee_mod->deleteFun($id);
              $this->session->set_flashdata("deleted", "Record deleted successfully!");
              if($reponseFromModel == true){
                $response = array(
                  'status' => 'success',
                  'message' => $_SESSION['deleted'],
                );
          
                $this->output
                  ->set_status_header(200)
                  ->set_content_type('application/json')
                  ->set_output(json_encode($response));
              }
            }

解决方案

To delete multiple IDs in one go, you would have to expose an API that takes multiple IDs (probably as a POST body)

then instead of calling

return this.http.get<any>(this.serverUrl + 'delete/' + data)

you can call

return this.http.get<any>(this.serverUrl + 'deleteBatch/', {ids: ids})

and in the backend, you would want to read the ids from the POST body and delete based on that

$data = json_decode(file_get_contents('php://input'), true);
$ids = $data->ids
// delete each item

这篇关于在复选框选择角度和 web api 后删除多条记录中的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆