【发布时间】:2019-11-08 19:13:18
【问题描述】:
我有一个包含多个选项的打开下拉菜单。我用两个创建了一个简单的pickList。我正在使用拼接以在按钮后从数组中删除所选值,但选择多个时,拼接似乎删除了所选的所有内容。
例如:在我右侧的列表中 - 如果我选择旧金山、迈阿密、波士顿和拉斯维加斯,然后将它们移到右侧选定的框中。这很完美。
问题是选择波士顿和迈阿密,然后单击向左箭头删除,删除除选定的之外的所有内容。我以前使用过 splice,但我不记得它忽略了数组中的项目。
我的代码组件如下所示:
<select [(ngModel)]="foundLocations" multiple="multiple">
<option *ngFor="let locOption of locations" [ngValue]="locOption" >
{{ locOption }}
</option>
</select>
<div class="selectButtons">
<button (click)="selectThese()">></button>
<br/>
<button (click)="removeThese()"><</button>
</div>
<select [(ngModel)]="selectedLocations" multiple="multiple">
<option *ngFor="let chosen of pickedLocationItems" [ngValue]="chosen" >
{{ chosen }}
</option>
</select>
在我的组件中看起来像:
foundLocations: any;
selectedLocations: any = [];
pickedLocationItems: any = [];
locations: any = ["San Francisco", "Seattle", "Las Vegas", "Toronto", "Boston", "Miami", "Altantic City"];
selectThese() {
for (var i = 0; i < this.foundLocations.length; i++) {
this.checkSelLocation(this.foundLocations[i]);
}
}
checkSelLocation(x: any) {
console.log("Check sel locations");
console.log(x);
this.pickedLocationItems.push(x);
}
removeThese() {
for (var g = 0; g < this.selectedLocations.length; g++) {
this.pickedLocationItems.splice(g, 1);
}
}
我有一个 Stackblitz example here。
【问题讨论】:
标签: javascript arrays angular