点击条件复选框上的 Toastr 消息 angular

Toastr messages on conditional checkbox click angular

简介:

我有一个 table,其中 table 的一列仅包含 复选框 因为 values.I 有一个名为 验证。我在 table.The value 上面有一个 value ,我分配的是 4。如果我启用更多,我需要显示一条 toastr 消息没有超过上面给出的数量的复选框。

我的问题:

例如,如果上面的数字是4,我最多只能勾选4个复选框。如果超过 4 个 复选框 checked.I 需要在单击验证按钮时显示 toastr 错误消息。

我试过的(选读):

Html 复选框和验证按钮:

<td>
    <input  type="checkbox" id="vehicle2" name="vehicle2"
      (change)="addCheckValue(i,list.isTicked)"
      [checked]="list.isTicked"
      [disabled]="list.isDisabled">
    </td>
   <button type="button" class="btn btn-outline-success"
   (click)="error()"  ><span class="fa fa-plus"></span>Validate</button>

TS: TS 中的复选框启用条件:

 addCheckValue(index, isChecked) {
    if (isChecked === undefined) {
      isChecked = true;
    }
    this.listes[index].isTicked = isChecked;
    console.log(this.listes);
    if (this.listes[index].isTicked === true) {
      this.counts = this.counts + 1;
    }
    if (this.listes[index].isTicked === false) {
      this.counts = this.counts - 1;
    }
  }

TS 中的错误信息:

 error(){
 if(this.counts>this.a){

    this.toastr.error(
  `More cheeckboxes enabled.Total checkbox enabled is ${this.counts}`,
  "Total Error",
  {
    timeOut: 3000
  }

);}
   

 }

所以这段代码不起作用,因为上面的 count 变量计算了复选框(选中和未选中)的点击次数,而不是计算有多少 复选框 已选中。因此,如果我有一个值 4,并且如果我选中和取消选中一个复选框 5 次,它将显示错误,这不是我想要的。如果你知道请帮助我。

Stackblitzlinkhttps://stackblitz.com/edit/angular-ivy-4vnwed?file=src%2Fapp%2Fapp.module.ts

注意:如果我的问题不清楚,请在评论中告诉我

 
 // Toggle checked flag.
 addCheckValue(index) {
    this.listes[index].isTicked = !this.listes[index].isTicked;
 }
 
 error() {
    const checkedCount = this.listes.filter(item => item.isTicked).length;
    if(checkedCount > this.a) {
       this.toastr.error(
          `More cheeckboxes enabled.Total checkbox enabled is ${this.counts}`,
          "Total Error",
          { timeOut: 3000 });
    }
}
 
 

您可以像下面这样使用 ngModel,而不是使用 change 事件手动处理复选框状态。

<input
    type="checkbox"
    id="vehicle2"
    name="vehicle2"
    [(ngModel)]="list.isTicked"
    [disabled]="list.isDisabled"
/>

这将保持列表的状态,然后你在你的按钮中点击你可以得到选中的复选框计数,如下所示并显示消息。

validate(): void {
    var selectedItemsCount = this.listes.filter((x) => x.isTicked).length;
    if (selectedItemsCount > this.maxSelection) {
      this.toastr.error(
        `More cheeckboxes enabled.Total checkbox enabled is ${selectedItemsCount}`,
        "Total Error",
        {
          timeOut: 3000
        }
      );
    }
}

这是工作代码和框。

https://codesandbox.io/s/checkbox-ngmodel-p9282

编辑 1: 如果您想在复选框更改时调用验证函数,则将 ngModelChange 事件绑定到复选框并将验证函数传递给它。

<input
    type="checkbox"
    id="vehicle2"
    name="vehicle2"
    [(ngModel)]="list.isTicked"
    (ngModelChange)="validate()"
    [disabled]="list.isDisabled"
/>