在Angular 8中第二次单击“删除所选”按钮后,表未更新

如何解决在Angular 8中第二次单击“删除所选”按钮后,表未更新

我需要从“删除选定的项目” btn单击表中删除选定的行(复选框)。 问题-第一次单击“删除选定的” btn时工作正常,但是当我再次复制相同的步骤(单击复选框,然后单击删除的选定项)时,表未在屏幕上更新,而每次检查后的长度btn点击,长度在减少,即在逻辑上工作正常。我是新手。预先感谢。

请在此处找到我的用户界面图像-UI.png

在下面共享我的代码段-

.ts文件-

items = [
    {
      id:1,execution_type: 'yagging',msisdn: 1898763212,bscode: 9876,nid: 875456,dob: '05/07/1991',poscode: 3456789,batchId: 12345,},{
      id:2,execution_type: 'KCPMSISDN Tagging',msisdn: 1798763212,bscode: 654367,poscode: 4789987,{ 
      id:3,msisdn: 1798763213,bulkList: {
    execution_type: string
    msisdn: any
    bscode: any
    nid: any
    dob: string
    poscode: any
    batchId:any
  }[] = [];

public searchString : string;
  
  selectedOption: null;

constructor(private fb:FormBuilder,private router: Router,private route: ActivatedRoute,) { }
    @ViewChild('focus',{ static: false }) input: ElementRef;

  ngOnInit(){ 
      this.bulkList = this.items;
      this.checkboxes = new Array(this.bulkList.length);
      this.checkboxes.fill(false);
      this.filterdata = new Array();
      
      console.log("hi",this.checkboxes)
  }
  selectedRow: Number;
  checkboxes: boolean[];
  checks=false;
  filterdata:any[];
  
createForm() {
    this.form = this.fb.group({
      execution_typ: ['',[Validators.required]],msisdn: ['',bscode: ['',nid: ['',dob: [''],poscode: [''],batchId:[''],})
}
validateMsisdn() {
    console.log("inside ")
    this.errors.msisdn =  Validator.validate({
      value: this.searchString,validations: [VALIDATIONS.CONTACT],options: { len: [11] }
    });
validate() {
    this.validateMsisdn();
    return this.errors.msisdn.valid;
  }

setClickedRow(index) {
  // console.log("inside set clicked row")
  // console.log(index)
  this.selectedRow = index;
}
toggleSelection(event,i,value) {
  console.log("inside toggle ")
  console.log(i);
  console.log("value inside toggle ",value)
  console.log("inside toggle ",event.target.checked,"   index ",i)
  this.checkboxes[i] = event.target.checked;
  console.log("toggle sel",this.checkboxes[i])
  
  if (this.checkboxes[i]==true)
  {
    console.log("inside if-true")
    this.filterdata.push(value);
  }
  else{
    console.log("inside if-false",i )
    
    this.filterdata.splice(this.filterdata.indexOf(value),1);
  }
  console.log("data ",this.filterdata);
}
delete()
{ 
  
  var atleastOneSelected = this.checkboxes.some(checkbox => checkbox === true);

  if (!atleastOneSelected) {
    alert("No rows selected.")
    return;
  }
 
  console.log("length ",this.checkboxes.length)
for(let i=0;i<=this.filterdata.length-1;i++)
{
    console.log("for loop ");
    console.log("this.fil ",this.filterdata[i]);
    const foundIndex = this.bulkList.findIndex(({ msisdn }) => msisdn === this.filterdata[i]);
    console.log("index  -- ",foundIndex);
this.bulkList.splice(foundIndex,1);
console.log("length after ",this.bulkList.length)

  }
console.log("check boc length ",this.checkboxes.length)
this.checkboxes = this.checkboxes.filter(checkbox => checkbox === false);
this.searchString="";
this.filterdata=new Array();

}

.html文件-

<div class="container-fluid">
    <div class="card-custom">
        <div class="card-header">
            <div class="align-item-cener">
                <h1 class="col-10"><marquee direction="left">{{title}}</marquee></h1>
            </div>
        </div>
        <!-- Execution type dropdown -->
        <div class="card-body">
            <div class="row">
                <!-- <div class="col-sm"> -->
                <div class="form-group">
                    <!-- <div class="col-md-6"> -->
                    <select name="" id="" class="form-control" style="margin-right:95px" >
                        <option value="">Please Select</option>
                        <option class="othercolor" *ngFor="let option of bulkProcessList" [value]='option'>
                            {{option}}
                        </option>
                        
                    </select>
                    <select name="" id="" class="form-control" style="margin-left:25px" [(ngModel)]="selectedOption" >
                        <option value="">Please Select</option>
                        <!-- <option [ngValue]="null" [disabled]="false" >All</option> -->
                        <option class="othercolor" *ngFor="let option of searchBox" [value]='option' >
                            {{option}}
                        </option>
                        
                     
                    </select>
            
            
                    <input class="form-control-search" [(ngModel)]="searchString" (keyup)="validateMsisdn()"
                        placeholder="Please Search" name="searchString" type="text"  appDigitsOnly="true"[disabled]="disableMsisdn">
                       
                        
                        <button type="submit" class="searchbtn" (click)="onEdit(item.id)">
                            <fa-icon [icon]="fa.faSearch"></fa-icon></button>
                            <button class="btn btn-primary btn float-right" (click)="onCreate()">
                                <fa-icon [icon]="fa.faPlus"></fa-icon> Create New
                            </button>
                            
                            
                </div>
            </div>
            <div class="col-lg-6">
                <div class="form-group">
                
            <small class="form-text text-danger">{{getMessage(errors.msisdn)}}</small>
            </div>
        </div>
        </div>
        <!-- View window -->
        <div class="table-wrapper"  >
            <table class="table table-responsive-md">
                <thead>
                    <tr>
                        <th><input type="checkbox" (change)="bulk($event)"  />Select All</th>
                        
                        <th>Execution Type<br><input class="form-control-headersearch" id="searchbox" [(ngModel)]="searchText" autocomplete="off"
                            placeholder="Please Search" name="srch-term" id="ed-srch-term" type="text"><button type="submit" class="headersearchbtn" (click)="onEdit(item.id)">
                                <fa-icon [icon]="fa.faSearch"></fa-icon></button></th>
                        <th>MSISDN<br><input class="form-control-headersearch" [(ngModel)]="searchText" autocomplete="off"
                            placeholder="Please Search" name="srch-term" id="ed-srch-term" type="text"><button type="submit" class="headersearchbtn" (click)="onEdit(item.id)">
                                <fa-icon [icon]="fa.faSearch"></fa-icon></button></th>
                        <th>BSCODE</th>
                        <th>NID</th>
                        <th>DOB</th>
                        <th>POSCODE<br><input class="form-control-headersearch" [(ngModel)]="searchText" autocomplete="off"
                            placeholder="Please Search" name="srch-term" id="ed-srch-term" type="text"><button type="submit" class="headersearchbtn" (click)="onEdit(item.id)">
                                <fa-icon [icon]="fa.faSearch"></fa-icon></button></th>
                        <th>EDIT</th>
               
                    </tr>
                </thead>
                <tbody *ngIf="bulkList.length > 0">
                    <tr *ngFor="let item of bulkList | filter :{msisdn:searchString,bscode:searchString,poscode:searchString}
                    let i=index;"(click)="setClickedRow(i)"  [class.active]="i == selectedRow">
                    
                    
                    <!-- filter:'execution_type':searchString"> -->
                        <td><input type="checkbox" (click)="toggleSelection($event,item.msisdn)" [checked]="checkboxes[i]" /> </td>
                        <td>{{item.execution_type}}</td>
                        <td>{{item.msisdn}}</td>
                        <td>{{item.bscode}}</td>
                        <td>{{item.nid}}</td>
                        <td>{{item.dob}}</td>
                        <td>{{item.poscode}}</td>
                        <td>
                            <button class="btn btn-outline-secondary btn-sm"  (click)="onEdit(item.id)">
                                <fa-icon [icon]="fa.faEdit"></fa-icon>
                            </button>
                        </td>
                        <!-- <app-contorl-message [control]="form.get('adList')"></app-contorl-message> -->
                    </tr>
                </tbody>
            </table>
            
            <!-- <div class="row justify-content-end">
                <ngb-pagination [(page)]="page" [pageSize]="pageSize" [collectionSize]="bulkList.length" class="mr-4"></ngb-pagination>
            </div> -->
        </div>
        <button class="form-control" (click)="onCreate()">
            <fa-icon [icon]="fa.faPlus"></fa-icon> ADD
        </button>
        <button class="form-control" (click)="delete()">
             Remove Selected
        </button>
        <button class="form-control" (click)="deleteAll()">
             Remove All
        </button>
    </div>
</div>

解决方法

这将是索引问题。 这样考虑: 您的索引i是在ngFor循环进行时建立的。 删除索引后,索引将“断开”,随后的索引设置和删除将失败。

我的建议:为您的商品提供一个生成的索引,并在您的对象数组中删除与此ID相匹配的对象。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-