Javascript 在复选框的复选框中删除表行在7中不起作用

Javascript 在复选框的复选框中删除表行在7中不起作用,javascript,html,angular,Javascript,Html,Angular,我有一个由循环中的一些数据组成的表,在这里单击编辑按钮,添加按钮和文本框将被启用,再次选中多个复选框,添加按钮将被禁用,再次取消选中多个复选框(保留一个复选框)“添加”按钮将被启用。直到这里一切正常。现在,如果我选中任何行并单击“删除”,则所选行将被删除,如果我单击“删除”按钮而不选中任何复选框,则会显示一条验证消息,“至少应选择一行”。下面是我尝试的代码 app.component.ts app.component.html 基本表 .table类向表中添加基本样式(轻填充和仅水平分隔):

我有一个由循环中的一些数据组成的表,在这里单击编辑按钮,添加按钮和文本框将被启用,再次选中多个复选框,添加按钮将被禁用,再次取消选中多个复选框(保留一个复选框)“添加”按钮将被启用。直到这里一切正常。现在,如果我选中任何行并单击“删除”,则所选行将被删除,如果我单击“删除”按钮而不选中任何复选框,则会显示一条验证消息,“至少应选择一行”。下面是我尝试的代码

app.component.ts app.component.html

基本表
.table类向表中添加基本样式(轻填充和仅水平分隔):

编辑 删除 添加
现在选中的行将被删除。以下是工作示例:

您应该向对象添加默认值为“false”的附加属性“selected”,并更新delete()方法,我是如何做到的:

您的对象:

  groups = [
    {
      "name": "pencils",
      "items": "red pencil",
      "selected": false
    },
    {
      "name": "rubbers",
      "items": "big rubber",
      "selected": false
    },
    {
      "name": "rubbers1",
      "items": "big rubber1",
      "selected": false
    },
  ];
  delete(){
    let checkedRows: Array<any> = [];
    let uncheckedRows: Array<any> = this.groups;
    this.groups = this.groups.filter((row: any) => {
      if (row.selected !== false) {
        checkedRows.push(row);
      } else {
        return row;
      }
    });
    if (checkedRows.length === 0) {
      alert('At least one should be selected!');
    }
    if (checkedRows.length === uncheckedRows.length) {
      alert('At least one row should be there unchecked!');
      this.groups = checkedRows;
    }
  }
delete()方法:

  groups = [
    {
      "name": "pencils",
      "items": "red pencil",
      "selected": false
    },
    {
      "name": "rubbers",
      "items": "big rubber",
      "selected": false
    },
    {
      "name": "rubbers1",
      "items": "big rubber1",
      "selected": false
    },
  ];
  delete(){
    let checkedRows: Array<any> = [];
    let uncheckedRows: Array<any> = this.groups;
    this.groups = this.groups.filter((row: any) => {
      if (row.selected !== false) {
        checkedRows.push(row);
      } else {
        return row;
      }
    });
    if (checkedRows.length === 0) {
      alert('At least one should be selected!');
    }
    if (checkedRows.length === uncheckedRows.length) {
      alert('At least one row should be there unchecked!');
      this.groups = checkedRows;
    }
  }
delete(){
让checkedRows:Array=[];
让我们取消选中:Array=this.groups;
this.groups=this.groups.filter((行:任意)=>{
如果(row.selected!==false){
选中行。推(行);
}否则{
返回行;
}
});
如果(checkedRows.length==0){
警报('应至少选择一个!');
}
if(checkedRows.length==uncheckedRows.length){
警报('应至少有一行未选中!');
this.groups=checkedRows;
}
}

这对我有用)祝你好运

怎么了?你以前问过这个问题并接受了回答。Answer还有一个实时演示,可以实现您想要的功能:从那时起,您显然忽略了此处显示的代码。谢谢,如果我单击“删除”按钮而不选中任何复选框,则会显示一条验证消息“至少应选择一个”不正确(抱歉),您是对的。我刚刚更新了这个示例-。现在它的工作方式你想要)请尝试它)谢谢你的回答,我需要一个更多的帮助,如果我选择所有的复选框,并单击删除按钮,应该有一个验证,用户不能删除所有的行点击删除按钮,至少有一行应该在那里未经检查..不是最好的解决方案,但它的工作原理,正如你所希望的那样,它会帮助你)祝你好运