如何在角度2/4上的表单提交上传递所有选中的复选框值

Adr*_*rma 6 typescript angular2-forms angular angular4-forms

我想在不使用change()click()函数的情况下获取组件中表单的所有已检查项目,因为它无法获取已经检查过的项目.

这是我在TS中的数组:

  PartyRoles = [
    {
     Id: 1,
     Name: "Vendor",
     Checked: true
    },
    {
      Id: 2,
      Name: "Client",
      Checked: true
    },
    {
      Id: 3,
      Name: "Consigner",
      Checked: false
    }       
  ]
Run Code Online (Sandbox Code Playgroud)

我的HTML表单:

<form (ngSubmit)="editPartyRolesSubmit()">
    <div *ngFor="let item of PartyRoles">
        <label>
        <input type="checkbox" value="{{item.Id}}" [attr.checked]="item.Checked==true ? true : null" [attr.disabled]="item.Id==1 ? true : null" />
        <span innerHTML="{{item.Name}}"></span>
       </label>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

我的onSubmit函数,我想要获取所有选中的值:

  editPartyRolesSubmit= function () {
    // Please suggest how to fetch checked items
  }
Run Code Online (Sandbox Code Playgroud)

小智 7

您可以使用Form和NgModel

<form #checkboxForm="ngForm" (submit)="editPartyRolesSubmit()">
    <div *ngFor="let item of PartyRoles">
        <label>
        <input type="checkbox" value="{{item.Id}}" [(ngModel)]="item.Checked" [name]="item.Name" [attr.disabled]="item.Id==1 ? true : null" />
        <span innerHTML="{{item.Name}}"></span>
    </label>
    </div>
    <input type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

功能可以

editPartyRolesSubmit() {
  console.log(this.PartyRoles);
}
Run Code Online (Sandbox Code Playgroud)