2016-03-07 59 views
0

一個QueryList獲取值的最佳做法,所以我創建一個列表輸入:Angular2:從輸入

template: `   
     <div *ngFor="#item of m_checkboxes"> 
      <label class="pull-left">{{item.name}}</label> 
      <Input #checkInputs type="checkbox" (change)="onChange($event.target.value)" [checked]="item.checked" value="{{item.value}}" class="pull-left" style="margin-right: 2px"> 
     </div> 

,我通過創建的輸入的QuestList:

@ViewChildren('checkInputs') 
    inputs:QueryList<any> 

,並在任何一個的輸入複選框點擊我的地圖循環過Observables,但我不得不進入NativeElement抓住檢查值,我覺得必須有更好的方式...

這就是我所做的現在,這是有效的......但這是否是最佳做法?

private onChange(value) {  
     this.inputs.map(v=>{ 
      console.log(v.nativeElement.checked); // grab value from native :-(
     }); 

    } 

感謝

肖恩

回答

2

而不是檢查DOM元素,我認爲這將是更好地檢查數據 - 的item.checked值,無論這些都是在你的組件。如果您檢查DOM的原因是更新數據值,那麼這就是雙向數據綁定的用途。我相信只要將[checked]="item.checked"更改爲[(ngModel)]="item.checked"將使雙向綁定成爲可能,以便Angular2爲您更新數據值。

+0

我只是想遠離2路綁定,因爲我將創建每個表記錄10個複選框,並可能有500個記錄,所以5000 5000路綁定......任何其他建議? tx Sean – born2net

+0

@ born2net你爲什麼試圖遠離2路綁定?如果您的自定義自制解決方案比Angular團隊專門爲此目的製作的性能更好,那麼無論有多少個綁定,我都會非常**。 – Douglas

+0

嗯,我的想法是,用我的onChange我做了一張地圖,我完成了,但有2種方式,它必須跟蹤這些可能的5000多個MEM地點...如果這是最好的方式,好...但想知道除了2種方式之外,還有其他方式來獲得這些動態創建的輸入的狀態...... tx,Sean。 – born2net