2017-04-05 55 views
0

我有複選框(與用戶選定的值,選中)。所以我需要編輯這個複選框,並將所有選中的值存入一個數組中併發送給它。
如何刪除數組中的重複值Angular 2

的Html

<div *ngFor="let item of officeLIST"> 
    <div *ngIf ="item.officeID== userdata.officeID"> 
     <input #office type="checkbox" id="office" name="office" class="form-control" value="{{item.officeName}}" checked (click)="officeSelection($event,$event.target.value)" > {{(item.officeName== "" ? "--No data--" : item.officeName)}} 
</div> 
    <div *ngIf ="item.officeID!= userData.officeID"> 
    <input #office type="checkbox" id="office" name="office" class="form-control" value="{{item.officeName}}" (click)="officeSelection($event,$event.target.value)"> {{(item.officeName== "" ? "--No data--" : item.officeName)}} 
</div> 
</div> 
<button type="button" class="btn btn-primary"(click)="updateOffice(userData.officeID)"> Save </button> 

點擊功能(以添加所選的值,併除去未選擇的值)

officeSelection(event: any, value) {   

     if (event.target.checked === true) 
     { 
       this.officeArray.push(value); 
     } 
     else { 
      this.officeArray.splice(this.officeArray.indexOf(value), 1); 

     } 
    } 

更新功能

updateOfficeDetail(officeid) { 

if(officeid= 1) 
{  
     this.officeArray.push('stars dept'); 
} 
else if(officeid= 2) 
{    

     this.officeArray.push('moon dept'); 
} 
else 
{   
    this.officeArray.push('Sun dept'); 

} 

}

問題是 如果我更新的數據中而不改變複選框的電流值,例如:太陽部門,
太陽部門officeArray
但是如果我想再次通過編輯複選框(選擇另一個值)來更新數據,所以如果用戶沒有編輯複選框(只需繼續處理),那麼先前選擇的值和當前選定的值將被推入該辦公室陣列
當前選擇的值)的>>>> officeArray將看起來像這樣

[「太陽」]
並且如果用戶試圖通過點擊一個更復選框以更新的複選框,陣列看起來像這樣
[「太陽」,「月亮」,「太陽」]

我只是想在辦公室陣列中[「太陽」,「月亮」]。我應該刪除嗎?或清除某些東西?

我試圖做一些研究和很多類似於我的問題。但不知何故,所有的解決方案都不適合我。任何想法?

謝謝

+0

我想幫助,但它混淆的描述,至少對我來說,你可以添加一個普拉克的代碼?會更容易我猜 –

+0

我明白了。但實際上它是一個大的代碼,所以我只是提取它的一小部分看到Wats的問題... – user3431310

回答

1

if表達updateOfficeDetail方法:

if(officeid === 1) 

,而不是

if(officeid= 1) 

我在你的情況下推薦使用Set,而不是數組:

class youComponent{ 
//... 
officeSelection(event: any, value) {   

    if (event.target.checked === true) 
    { 
     if(this.officeArray.includes(value.trim())){ 
      this.officeArray.push(value); 
     } 
    } 
    else { 
     this.officeArray.splice(this.officeArray.indexOf(value), 1); 
    } 
} 

updateOfficeDetail(officeid) { 

if(officeid === 1) 
{  
     if(this.officeArray.includes('stars dept')){ 
      this.officeArray.push('stars dept'); 
     } 

} 
else if(officeid === 2) 
{    
     if(this.officeArray.includes('moon dept')){ 
     this.officeArray.push('moon dept'); 
     } 
} 
else 
{  
    if(this.officeArray.includes('Sun dept')){ 
     this.officeArray.push('Sun dept'); 
    } 

} 
} 

}

+0

它不工作.... – user3431310

+0

opps對不起,錯誤地鍵入等待讓我試試 – user3431310

+0

我試過但爲了聲明它,我得到泛型類型'Set '需要1個類型參數。我應該說些什麼? – user3431310

1

我建議使用HashMap中,而不是數組:

Map<String,String> officeMap = new HashMap<>(); 
officeMap.put(index, value);