2017-12-04 7 views
0

ngmodelを使用して動的に作成されたチェックボックスに双方向データバインディングを使用することに問題があります。フォームタグを使用せずに実現できます。フォームの検証を使用せずに選択したチェックボックスが1つもない場合は、警告メッセージを設定します。ngmodelを使って、角度2の動的に作成されたチェックボックスの双方向データバインディングを設定する方法

答えて

0

私はこのようにして、チェックボックスでバインドする必要があるオブジェクトのリストを取得します。私はオブジェクトのリストを持つチェックボックスを生成するためにngforを使用しています。チェックするために、チェックされたチェックボックスIDがメインデータオブジェクトリストに存在するかどうかをチェックします。追加やmaindatasourceリストから削除する場合

私はtsはあなたが任意のidがthis.mainDataSourceかどうかをリストに追加し使用することができ、検証のため

AddRemoveDataSource(eventChk: any) { 
     if (eventChk.target.checked) { 
      let found = this.mainDataSource.sourceID.find(item => item === eventChk.target.value); 
      if (!found) 
       this.mainDataSource.sourceID.push(dataSoruce.target.value); 
     } 
     else 
      this.mainDataSource.sourceID = this.mainDataSource.sourceID.filter(item => item !== eventChk.target.value); 
    } 

ファイルイベント

<div class="form-check"> 
    <label class="form-check-label"> 
     <div class="col-sm-3" style="float:left; display:block;" *ngFor="let source of lstSource"> 
       <input type="checkbox" name="source.dataSourceName" 
        value="{{source.Id}}" 
        class="form-check-input" 
        [checked]="BoundObjectlstId.includes(source.Id) " 
        (change)="AddRemoveDataSource($event)" /> 
        {{source.dataSourceName}} 
      </div> 
    </label> 
</div> 

を追加しました。

+0

あなたは、検証と配列リストを使って完全なコードを投稿できますか? –

+0

@pranabvv - 完全なコード..検証のためにthis.mainDataSource.sourceID配列をチェックすることをお勧めします。この配列にチェックボックスのチェック値を追加する必要があります。配列から削除する必要があります...検証では、配列数を確認する必要があります –

+0

Okしかし、どのようにngmodel双方向バインディングでそれを達成することができます。入力要素の双方向バインディングのように。 –

関連する問題