Angular 6 个动态复选框键值 return ID 数组

Angular 6 dynamic checkboxes keyvalue return array of IDs

我有一个使用 returns 对象的键值管道的动态复选框列表,而不仅仅是 selected ID 数组。

任何人都可以帮忙吗,我需要表单来提交一组 selected 用户 ID。

https://stackblitz.com/edit/angular-ciaxgj

编辑 这是带有多个select(国家/地区)的类似表格的日志: console log

我需要 users(复选框)到 return 像上面日志中的 countries(多 select)这样的数组。

将您的 OnSubmit 函数更改为

onSubmit() {
    console.log(this.userForm.value);
    var usersObj = this.userForm.value.users;
    var selectedUserIds = [];
    for (var userId in usersObj) {
        if (usersObj.hasOwnProperty(userId)) {
          if(usersObj[userId])//If selected
          {
              selectedUserIds.push(userId);
          }

        }
    }
    console.log(selectedUserIds);
  }

这是更新后的代码

https://stackblitz.com/edit/angular-9fd17t

如果您想以表单形式提交,请在表单中添加一个隐藏字段

<input type="hidden" name="selectedUserIds" value=""/>

从 onSubmit 设置值 selectedUserIds 并提交表单代码。

所以,碰巧我一直在想像多选一样的解决方案,复选框 would/could return 已选项目的现成数组。

相当简单的解决方案是阅读 Eliseo 的另一篇帖子并结合 Jaba Prince 的回答:

onSubmit() {
    var usersObj = this.userForm.value.users;
    var selectedUserIds = [];
    for (var userId in usersObj) {
        if (usersObj.hasOwnProperty(userId)) {
          if(usersObj[userId])//If selected
          {
              selectedUserIds.push(userId);
          }

        }
    }

    let data = {
      users: selectedUserIds
    }

    console.log(data);

    // post data in service call

  }

非常感谢你们两位!