2017-06-04 78 views
2

我是Angular的新手,我想获取当前选中的复选框ID。我已经检查过其他线程,但其中大部分都使用Controller,我正在使用组件。
以下是详细信息。 我有这样一个组件角4组件获取选中复选框

<table class='table table-striped table-hover admin-form' *ngIf="deviceCategories"> 
<a (click)="test()">test</a> 
<thead> 
    <tr> 
     <td class="text-center">序列</td> 
     <th class="text-center">组名</th> 
     <th class="text-center">LOGO</th> 
     <th class="text-center">操作</th> 
    </tr> 
</thead> 
<tbody> 
    <tr *ngFor="let deviceCategory of deviceCategories | paginate: config"> 
     <td class="center"> 
      <input type="checkbox" ng-model="selected[deviceCategory.id]" id="checkbox_{{deviceCategory.id}}"> 
     </td> 
     <td class="text-center">{{deviceCategory.id}}</td> 
     <td class="text-center">{{deviceCategory.name}}</td> 
     <td class="text-center"><img src="{{deviceCategory.logoUrl}}" width="30" alt=""></td> 
     <td class="text-center project-actions"> 
      <a [routerLink]="['/management/deviceCategory/edit/',deviceCategory.id]" class="btn btn-white btn-xs text-muted"> <i class="fa fa-eye text-system"></i> 修改 </a> 
      <a (click)="OnDelete(deviceCategory.id)" class="btn btn-white btn-xs text-muted"> <i class="fa fa-eye text-system"></i> 删除 </a> 
     </td> 
    </tr> 
</tbody> 

这里是我的TS

import { Component, OnInit, Input } from '@angular/core'; 
import { PaginationInstance } from 'ng2-pagination'; 
import { DeviceCategoryService}from '../../../services/deviceCategory.service'; 
import { DeviceCategoryViewModel } from "../../../model/deviceCategory"; 


@Component({ 
    selector: 'app-device-category-admin-table', 
    templateUrl: './device-category-admin-table.component.html', 
    styleUrls: ['./device-category-admin-table.component.css'], 
    providers:[DeviceCategoryService] 
}) 
export class DeviceCategoryAdminTableComponent implements OnInit { 

    @Input() deviceCategories :any; 
    @Input() config:any; 

    public selected:{} 

    constructor(
    private deviceCategorySvc:DeviceCategoryService 
) { } 

    ngOnInit() { 
    } 

    OnDelete(id:number){ 
     this.deviceCategorySvc.deleteDeviceCategory(id).subscribe(result=>{ 
      if(result.ok) 
      { 
      this.deviceCategorySvc.currentCategorys().subscribe(result=>{ 
       this.deviceCategories=result.data as DeviceCategoryViewModel[]; 
      }); 

      } 

     }); 
    } 
    test(){ 
    var result=this.selected; 
     console.log(result); 
    } 

任何帮助,将不胜感激。

+0

哪里是复选框 – Sajeetharan

+0

感谢,我加入了,现在,我想选择的deviceCategory.id或deviceCategory –

+0

的旁注:您还使用'NG-model'其中AngularJS语法,也许检查你的代码,你实际上没有在其他地方使用AngularJS语法... – Alex

回答

0

从@Sajeetharan的建议,我可以通过下面的代码达到我的要求。

HTML

<td class="text-center"> 
     <input type="checkbox" [(ngModel)]="deviceCategory.checked" /> 
    </td> 

模型deviceCategory

export interface DeviceCategoryViewModel { 
     id?: number; 
     name?: string; 
     checked?:boolean; 
    } 

TS码来获取当前的框。

console.log(this.deviceCategories.filter(d=>d.checked===true)); 
1

可以使用[checked]属性和变量绑定到它,它应该是一个布尔值

<input type="checkbox" [checked]="deviceCategory.checked" id="checkbox_{{deviceCategory.id}}" 
/> 

要获得ID,您可以在(change)="getDeviceID()"

<input type="checkbox" (change)="getDeviceID(deviceCategory)" [checked]="deviceCategory.checked" id="checkbox_{{deviceCategory.id}}" 
    /> 
增加一个功能

and inside TS

getDeviceID(device:any) { 
     console.log(device.id); 
} 
+0

谢谢,我怎么能在我的ts文件中得到这个检查ID? –

+0

增加了一个解释 – Sajeetharan

+0

谢谢,我可以理解,我将需要定义一个数组来存储所选择的ID在getDeviceID方法,以前,我可以看到演示,将筛选所选的复选框,而不是这种方式。是否有可能实现这样的[链接](https://stackoverflow.com/questions/18100629/angular-get-selected-checkboxes) –