Ваш ng-select
имеет двустороннюю связь с selectedCityIds
, это то, что делает нотация [(ngModel)]
. Это означает, что изменение одного (либо GUI ng-select, либо свойства класса selectedCityIds
) изменяет другое. Вот предлагаемое решение:
Я создал текстовый ввод, который позволяет пользователям вводить название города.
<label>Type name of city to delete</label>
<input type="text" [(ngModel)]="cityToDelete" style="margin-left: 10px" />
Затем ваш deleteSingle
метод завершается следующим образом:
// This is the property bound to the text input
cityToDelete: string = "";
deleteSingle () {
// This will be the city to delete
const city = this.cities2.find(c => c.name === this.cityToDelete);
// If city with this name is found in list, then it's removed
if(city != null) {
console.log(city);
this.selectedCityIds = this.selectedCityIds.filter(id => id !== city.id);
}
}
Stackblitz здесь .
Попробуйте:
- Добавьте "Вильнюс" и "Каунас" в свой
ng-select
. - Введите одно из вышеуказанных имен в текстовом поле.
- Нажмите «Удалить город по имени»
Вы увидите, что название города, которое вы ввели, будет удалено из GUI. Код искал ваш ng-select
источник данных, который * cities2
в вашем примере. Если город с именем, которое вводит пользователь, не найден в cities2
, никаких действий не предпринимается.