2017-04-05 69 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);