javascript - 使用 Angular 获取所有选定复选框的值

标签 javascript angular typescript

如果我在互联网上搜索时在其他地方问过这个确切问题,我深表歉意,但我发现了一些类似的场景及其解决方案,但不是我正在寻找的。希望有人能在这方面帮助我。所以这里是,

I need to obtain the value of all the checkboxes that have been checked. The checkboxes are dynamically created based on the number of Array (assets) items

我正在创建一个表单,它使用 ngFor 来遍历数组,并为每个字段创建复选框。所以我所做的就是这样的,

    <form>
      <div class="row"><label>Assets</label></div>
      <div *ngFor='let asset of assets' [(ngModel)]='assets'>
        <div class="col-8"><input type="checkbox" name="{{asset}}" (change)="onChange()"></div>
        <div class="col-35"><label>{{asset}}</label></div>
      </div>
    </form>

外面有很多解决方案,但不幸的是每个人都举了一个例子,其中数组更像是一个键:值对,例如,

    this.someArray = [
       {id:1, name: someName, isSelect: false},
       {id:2, name: someOtherName, isSelect: false}
    ]

我了解如何使用这种数组结构,但就我而言,我有以下字符串数组,

    assets: String[] = ['one', 'two', 'three'];

我的问题是,当我只有一个简单的字符串数组时,如何获取已检查的所有值。到目前为止我所做的事情是这样的, asset.component.html

    <form>
    <div class="row"><label>Assets</label></div>
    <div *ngFor='let asset of assets' [(ngModel)]='assets'>
    <div class="col-8"><input type="checkbox" name="{{asset}}" (change)="onChange()"></div>
    <div class="col-35"><label>{{asset}}</label></div>
    </div>
    </form>

asset.component.ts

    export class AppComponent  {
      name = 'Angular ' + VERSION.major;
    
      assets: String[] = ['one', 'two', 'three'];
      
      onChange(): void {
        alert(this.assets);
      }
    }

任何帮助将不胜感激。期待尽快收到您的回复,

作为引用,这里是 StackBlitz 实现(尚未完成),

https://stackblitz.com/edit/angular-ivy-jtnzhp?file=src/app/app.component.html

亲切的问候

最佳答案

你可以这样做:

HTML 文件:

<div *ngFor="let asset of assets">
  <input (change)="onChange(asset)" type="checkbox" value="{{ asset }}" />{{asset}}
</div>

TypeScript 文件:

assets: string[] = ['one', 'two', 'three'];
all_selected_values: string[] = [];

onChange(value: string): void {
  if (this.all_selected_values.includes(value)) {
    this.all_selected_values = this.all_selected_values.filter((item) => item !== value);
  } else {
    this.all_selected_values.push(value);
  }
  console.log(this.all_selected_values);
}

Working example

关于javascript - 使用 Angular 获取所有选定复选框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71522120/

相关文章:

javascript - 从javascript数组获取随机值并将其打印为字符串

javascript - JQuery 保存和读取 $.cookie 存储对象

php - 在javascript中爆炸新行

angular - Docker-具有Angular 4模板的ASP.NET Core 2.0

angular - 如何设置表单字段值ng-Bootstrap模型的值

javascript - JavaScript 中数组存储在内存中的什么位置?

angular - 将具有共享服务的多个 Angular 应用程序的条件 Bootstrap 迁移到嵌套的 ngModules

javascript - rollup.JS 和 "' 这个关键字相当于 'undefined'

javascript - javascript 文件中的函数无法使用声明文件检测自己的类型

javascript - 如何使用 Typescript/Javascript/Angular 4 过滤 JSON 数据?