2017-03-24 6 views
0

Ich habe eine Liste von Elementen in einem Dropdown und jedes Mal, wenn ich auf eines der Dropdown-Elemente klicke/auswähle, wird es zu einem anderen Array hinzugefügt und dann möchte ich es aus der Liste entfernen lassen . DieseEntfernen eines gespleißten Elements aus dem Dropdown-Menü

ist das, was ich habe:

<li *ngFor="let item of dropdownlist "> 
    <a (click)="select(item) " class="dropdown-item "> 
     <i class="fa fa-fw " [ngClass]="{ 'fa-check': item.checked, 'glyphicon-none': !item.checked} "></i> 
    </a> 
</li> 

select(item: any) { 
    item.checked = !item.checked; 
    this.containers.push(item); 
    this.dropdownlist.splice(item.checked); 
    } 

dropdownlist: Array<any> = []; 

containers: Array<Panel> = [ 
    new Panel(1, 'Test1', 'export data', 'test data in modal'), 
    new Panel(2, 'Test2','export image', 'more test data'), 
    new Panel(3, 'Test3', 'export data', 'more and more data') 
]; 

Mein Problem ist, dass, wenn der Drop-Down hat nur ein Element und ich versuche, es auf die anderen Array hinzufügen es nicht aus der Drop-Down-Orten entfernt.

Antwort

1

.splice() können mehrere Argumente:

array.splice(start) 
array.splice(start, deleteCount) 
array.splice(start, deleteCount, item1, item2, ...) 

In Ihrem Fall, um sicherzustellen, löschen Sie nur den Artikel, den Sie möchten, stellen Sie sicher, dass das zweite Argument = 1 und dass Sie in dem Index des Elements übergeben möchten Sie entfernen:

<li *ngFor="let item of dropdownlist; let i = index "> 
    <a (click)="select(item, i) " class="dropdown-item "> 
     <i class="fa fa-fw " [ngClass]="{ 'fa-check': item.checked, 'glyphicon-none': !item.checked} "></i> 
    </a> 
</li> 

select(item: any, index: number) { 
    item.checked = !item.checked; 
    this.containers.push(item); 
    this.dropdownlist.splice(index, 1); 
} 
+0

Danke, das hat perfekt funktioniert! – bluePearl

Verwandte Themen