如何在angular的component.ts文件中传递复选框的选中和未选中值?

时间:2018-11-15 05:00:03

标签: javascript angular typescript angular6

我有一个看起来像这样的复选框:

enter image description here

它通过json数据进行迭代:

enter image description here

代码如下:

<div class="card-body">
   <h5>Document List</h5>
   <div class="form-check" *ngFor="let document of documents">
      <label class="form-check-label" for="check1">
      <input type="checkbox" class="form-check-input" id="check1"  [value]= "document.docId"
      name="document.docName" (click)="callMe(document.docId)" >{{document.docName}}
      </label>
   </div>
</div>

我想进行类似用户选中复选框的操作,然后尝试将ID传递给component.ts文件。在这种方法中,(click)=“ callMe(document.docId)” 如果选中了这些框,则ID将如 component.ts 文件中的

所示
callMe(id:any){
  console.log(id);
}

enter image description here

但是当我取消选中复选框之一时,发生的问题是

图2。 enter image description here

document.ts文件是:

export class Document {

    docId:number;
    docName:number;

}

3 个答案:

答案 0 :(得分:1)

    callMe(id:any,event){
      if(event.target.checked)
       {  
        console.log(id);
       }
    }

<div class="card-body">
   <h5>Document List</h5>
   <div class="form-check" *ngFor="let document of documents">
      <label class="form-check-label" for="check1">
      <input type="checkbox" class="form-check-input" id="check1"  [value]= "document.docId"
      name="document.docName" (click)="callMe(document.docId,$event)" >{{document.docName}}
      </label>
   </div>
</div>

答案 1 :(得分:1)

您必须使用$eventid的组合

callMe(event, id) {
  if (event.target.checked) {
    console.log(id);
  }
}

并在如下所示的模板文件中

<input type="checkbox" class="form-check-input" id="check1" [value]="document.docId" name="document.docName" (change)="callMe($event, document.docId)">{{document.docName}}

正在工作的堆叠闪电是here

答案 2 :(得分:1)

app.component.ts

import { Component } from '@angular/core'

@Component({
  selector: 'my-app',
  templateUrl: 'src/app.component.html'
})
export class AppComponent {
  documents = [
    {
      docId:1,
      docName:'Proforma Invoice',
      checked: true
    },
    {
      docId:2,
      docName:'Packing List',
      checked: false
    }
  ];

  checkboxClicked() {
    this.documents.filter(x => x.checked).map(x => {
      console.log(x.docId);
    })
  }

}

注意:您不应将ID用作复选框值。使用该对象创建一些布尔属性。

app.component.html

<ng-container *ngFor="let document of documents">
  <input type="checkbox" name="checkbox{{document.docId}}" [(ngModel)]="document.checked" (change)="checkboxClicked()" />
</ng-container>