我有一个看起来像这样的复选框:
它通过json数据进行迭代:
代码如下:
<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);
}
但是当我取消选中复选框之一时,发生的问题是
document.ts文件是:
export class Document {
docId:number;
docName:number;
}
答案 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)
您必须使用$event
和id
的组合
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>