Я использую динамическое автозаполнение, чтобы позволить пользователю выбирать несколько элементов, но я застрял в том, как определить, когда пользователь нажал x
, чтобы удалить элемент из списка. я знаю, что могу использовать [(ngModel)]
для обнаружения изменения значения, но мой вопрос:
Есть ли способ, как функция обратного вызова, для обнаружения удаленного элемента при нажатии x
?
как определено:
<p-autoComplete
#autoCompleteObject
[(ngModel)] = "value" [suggestions] = "filteredOptions"
(completeMethod) = "filterObjects($event)"
[multiple] = "true"
[dropdown] = "false"
(onSelect) = "emitData()"
(onUnselect) = "emitData()"
placeholder = "{{ label | i18n}}"
>
<ng-template let-item pTemplate = "selectedItem">
<div class = "selected-item">
<span >{{item[labelProperty]}}</span>
</div>
</ng-template>
<ng-template let-item pTemplate = "item">
<div class = "flex ">
<span >{{item[labelProperty] | i18n}}</span>
</div>
</ng-template>
</p-autoComplete>
Используемый
<my-autocomplete-multiple [(ngModel)] = "entryItems" label='type_here' [options]=allItems
ngDefaultControl></my-autocomplete-multiple>
Согласно документация, метод обратного вызова onUnselect()
вызывается при удалении выбранного значения. Параметр $event
является невыбранным значением в множественном режиме.
Вместо привязки emitData()
к обоим методам onSelect()
и onUnselect()
я рекомендую использовать отдельный метод для каждого, например:
(onSelect) = "emitAddData($event)"
(onUnselect) = "emitRemoveData($event)"
Тогда тот, который привязан к onUnselect()
, может обрабатывать все, что вам нужно делать, когда элемент удаляется.