2017-07-08 13 views
1

私は非常に角度があり、このかなり単純な問題で立ち往生しています。私はWebサービスからいくつかのチェックボックスを表示するためのデータを取得しています。ユーザーが選択したすべてのチェックボックスの値を取得する方法が必要です。私はマテリアルテーマを使用しています。角度4チェックボックスからの値を取得

<span *ngFor="let x of maintainanceTypeList"> 
    <md-checkbox 
     name="{{x.maintenancetype}}" 
     value="{{x.maintenancetype}}" 
     [formControl]="CreateSocietyForm.controls['checkMaintainanceType']"> 
     {{x.maintenancetype}} 
    </md-checkbox> 
</span> 

答えて

2

あなたはmd-checkboxchangeイベントを追加し、機能にオブジェクトを渡すことができます。 arrayを維持して、どれがcheckeduncheckedになっているかを把握し、それに従って配列を更新します。

HTML:

<span *ngFor="let x of maintainanceTypeList"> 
    <md-checkbox 
     name="{{x.maintenancetype}}" 
     value="{{x.maintenancetype}}" 
     (change)="change($event, x)"> 
     {{x.maintenancetype}} 
    </md-checkbox> 
</span> 

<p> Selected value: {{selectedValue | json}} </p> 

component.ts:

export class SelectFormExample { 
    selectedValue = []; 

    maintainanceTypeList = [ 
    {maintenancetype: 'Steak'}, 
    {maintenancetype: 'Pizza'}, 
    {maintenancetype: 'Tacos'} 
    ]; 

    change(e, type){ 
    console.log(e.checked); 
    console.log(type); 
    if(e.checked){ 
     this.selectedValue.push(type); 
    } 
    else{ 
    let updateItem = this.selectedValue.find(this.findIndexToUpdate, type.maintenancetype)); 

    let index = this.selectedValue.indexOf(updateItem); 

    this.selectedValue.splice(index, 1); 
    } 

    } 

    findIndexToUpdate(type) { 
     return type.maintenancetype === this; 
    } 
} 

Plunker demo

+0

ありがとうございました!私はそれを試してみる。 –

+0

それは完全に動作します!ありがとう、トン –

0

代わりのe.checked次を使用することができます。

の作業例

<input class="form-check-input" type="checkbox" (change)="selectBadge($event, badge._id)"> <span class="badge badge-pill {{badge.color}}">{{badge.text}}</span> 

selectBadge (e, id) { 

if (e.target.checked) { 

    this.product.badges.push(id); 
} else { 
    this.product.badges.splice(this.product.badges.indexOf(id), 1); 
}} 
+1

私はあなたがこの質問に対する他の答えを参照していると思います。それを含めるためにあなたの答えを編集してください。将来、このような小さな追加をコメントとして他の回答に追加することを検討してください。ボーナス:私はあなたが間違った前提をしたと思います。あなたは ''を使っていますが、もう一つの答えは ''です。 2つのタイプのイベントが異なります – WorldSEnder

+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューから](/レビュー/低品質の投稿/ 17622466) – FluffyKitten

関連する問題