2016-04-14 91 views
15

我正在使用Angular 2打字稿。我面臨一個問題,我需要提交一個包含複選框的表單。我需要複選框屬性中的值。複選框是動態的,所以任何數量的複選框都會在那裏。從角度2打字稿中的複選框獲取值

<div class="checkbox" *ngFor="#label of labelList"> 
     <div class="col-sm-4"> 
      <label><input type="checkbox" value="{{label.Id}}">{{ label.Name }} </label> 
     </div> 
</div> 

回答

19

我認爲這應該工作(未測試)

<div class="checkbox" *ngFor="let label of labelList"> 
    <div class="col-sm-4"> 
    <label> 
     <input type="checkbox" value="{{label.Id}}" (change)="checkboxes[$event.target.getAttribute('value')]=$event.target.checked"> 
     {{ label.Name }}</label> 
    </div> 
</div> 

,並在組件改變複選框的值存儲在checkboxes

+0

什麼將在打字稿(角2)方面。會有什麼功能? – James

+0

沒有功能,只是一個包含已更改複選框值的對象「複選框」。如果您提供更多關於您實際嘗試完成的信息,我可能會提出更多建議。 –

+0

控制檯的複選框的值? – James

0

您必須指定name屬性才能在後端追蹤複選框。

2

我用這個複選框: ng2-material checkbox

而且你可以在你的組件做到這一點:

<md-checkbox [checked]="exists(label.Id)" (click)="toggle(label.Id)"></md-checkbox> 

    selected = []; 
    @Output() selectedChange:EventEmitter<any> = new EventEmitter(); 

    toggle(id) { 
    var index = this.selected.indexOf(id); 
    if (index === -1) this.selected.push(id); 
    else this.selected.splice(index, 1); 
    this.selectedChange.emit(this.selected); 
    } 

    exists(id) { 
    return this.selected.indexOf(id) > -1; 
    } 
-4

我想你想知道選中的複選框或沒有,你可以很容易地獲得通過爲輸入標籤屬性指定ng-model屬性來指定布爾值的形式。

<md-checkbox ng-model="ctrl.someBooleanValue"></md-checkbox> 

更多信息檢查angular material md-checkboxangular material md-checkbox demo

+3

該問題需要Angular 2的幫助; 「ng-model」是Angular 1語法。 – ansorensen

1

輸入

<input type="checkbox" (change)="selectionChange($event.srcElement, dataItem)"> 

更改事件

selectionChange(input: HTMLInputElement) { 
    input.checked === true 
     ? doSomethingIfTrue() 
     : doSomethingIfFalse(); 
} 
0
enter code here 

submitForm(form:NgForm){ 
 
console.log(form.value); 
 
}
<div class="checkbox" *ngFor="#label of labelList"> 
 
     <div class="col-sm-4"> 
 
      <label><input type="checkbox" name='label{{label.Id}}' value="{{label.Id}}">{{ label.Name }} </label> 
 
     </div> 
 
</div>

使用name屬性,包括label.id,所以你會得到在陣列形式的所有價值。

預計這將幫助。