Я использую Angular плагин множественного выбора материала для отображения выпадающего списка множественного выбора с автозаполнением. Я использовал этот плагин для динамического отображения нескольких выпадающих списков.
<div class="sidebar-select-container" *ngFor="let select of sidebarDropdownSelectList; let i = index;">
<div>
<mat-select-autocomplete
class="autocomplete-select"
id="{{i}}"
[placeholder]="select.main_display_name"
[options]="select.main_data"
[multiple]='true'
[display]="'display'"
[value]="'value'"
[selectedOptions]="selectedOptions"
(selectionChange)="getSelectedOptions($event)"
(click)="getTypeOfDropdown(i)"
>
</mat-select-autocomplete>
<i class="fa fa-angle-down alternate-select-icon" aria-hidden="true"></i>
</div>
</div>
Я использовал @ViewChildren для запроса DOM о множественных выпадающих списках и возврата QueryList.
@ViewChildren(SelectAutocompleteComponent) multiSelect:
QueryList<SelectAutocompleteComponent>;
Когда я пытаюсь выполнить операцию над getSelectedOptions ($ event) и вернуть что-то, когда не было сделано выделение, как показано ниже
getSelectedOptions(selected) {
this.selected = selected;
if (this.selected.length < 1) {
console.log('hi');
}
}
Затем эта функция запускается при каждом действии, например, при щелчке мыши, при перемещении курсора мыши. Он должен работать только когда я выполняю операцию изменения, но он просто продолжает печатать «привет» в консоли. Он ведет себя так, только когда в массиве this.selected нет данных или нет выбора. Я даже протестировал на сайте плагинов, но у него та же проблема. Я хочу вызвать событие только тогда, когда нет выбора, который тоже только один раз.