2017-09-26 18 views
1

角度2アプリでチェックボックスがオンになっているかどうかに基づいて配列から要素を押したり取り除いたりすることを処理しようとしています。私はネイティブのHTMLがこのロジックの何らかの形を処理できることを知っていますが、私はターゲットとするものを正確に把握しようとしています。これは私の機能のようです:チェックボックスの選択を解除して配列から項目を削除しようとしています

private onOptionSelected(option) 
{ 
    let optionObj = { 
     option: option, 
     complex: false 
    }; 

    if (option) 
    { 
     this.record.requestedOptions.push(optionObj); 
    } 
    else if (!option) 
    { 
     this.record.requestedOptions.splice(option); 
    } 
} 

今、最初の部分が動作します。チェックボックスの1つをチェックすると、その項目が配列に追加され、バックエンドに保存されます。

しかし、そのアイテムのチェックを外すと、そのアイテムをアレイから削除するのではなく、そのアクションによって新しいアイテムがアレイに追加されます。

ここで、ネガティブなケースを処理するにはどうすればいいですか - アイテムがチェックされていないので、アレイから削除する必要がありますか? 「checked」や「!checked」などのネイティブHTML属性をターゲットにすることはできますか?あなたはあなたのコードを書かれている方法で問題がいくつかあり

<div> 
     <md-checkbox 
      (change)="onOptionSelected('A')">Option A 
     </md-checkbox> 

     <md-checkbox 
     (change)="onOptionSelected('b')">Option B 
     </md-checkbox> 

     <md-checkbox 
     (change)="onOptionSelected('c')">Option C 
     </md-checkbox> 
    </div> 

答えて

1

:ところで

が、これは私のhtml /ビューは次のようになります。 - オプション値を送信する代わりに、スコープ内のイベントパラメータを渡します。 - spliceの構文が正しくありません - Check reference

変更

(change)="onOptionSelected('A')">Option A 

(change)="onOptionSelected($event)">Option A 

にエラーを取得JS

private onOptionSelected(e) { 
    let optionValue = e.target.innerHTML.split(' ')[1]; 
    let isChecked = e.target.checked; 

    let optionObj = { 
    option: optionValue, 
    complex: false 
    }; 

    if (isChecked) { 
    this.record.requestedOptions.push(optionObj); 
    } else { 
    // find the element that contains optionValue 
    let indexToDelete = undefined; 

    this.record.requestedOptions.forEach((obj, currIndex) => { 
     if(obj.option === optionValue) { 
      indexToDelete = currIndex; 
     } 
    }); 

    if(indexToDelete !== undefined) { 
     this.record.requestedOptions.splice(indexToDelete, 1); 
    } 
    } 
} 
+0

:未定義のプロパティ 'innerHTMLプロパティ' を読み取ることができません – Ademo

+0

innerHTMLを使うのではなく、 "value"を使って何かを渡すことができるはずだと思います。 – Ademo

+0

私は角度を持った文脈があまりありませんが、これは基本的な要点です。引数として渡された '$ event'がイベントオブジェクトであると私は考えていました。 –

関連する問題