Я использую Angular 7.2 для создания элемента управления select согласно:
<mat-select placeholder="Organisation Type" [formControl]="codeSelect" multiple (selectionChange)="changeValue($event)">
<mat-select-trigger>
{{codeSelect.value ? codeSelect.value[0] : ''}}
<span *ngIf="codeSelect.value?.length > 1" class="example-additional-selection">
(+{{codeSelect.value.length - 1}} {{codeSelect.value?.length === 2 ? 'other' : 'others'}})
</span>
</mat-select-trigger>
<mat-option *ngFor="let org of orgSelectList" [value]="org.orgCode">{{org.orgDisplay}}</mat-option>
</mat-select>
</mat-form-field>
Это работает как задумано. У меня есть код, который выглядит, чтобы удалить выбранные элементы, в соответствии с:
let x = this.codeSelect.value.findIndex(x => x == itemToBeRemoved);
if (x > -1) {
this.codeSelect.value.splice(x, 1);
}
Хотя это действительно удаляет его из массива выбранных элементов. Если я выберу новые значения в элементе управления выбором, все исходные элементы все еще будут выделены (т. Е. Отмечены галочкой).
Как очистить выбранные позиции?
После ответа @Maarti мой код теперь работает с использованием
let x = this.codeSelect.value.findIndex(x => x == itemToBeRemoved);
if (x > -1) {
this.codeSelect.value.splice(x, 1);
}
this.codeSelect.setValue(this.codeSelect.value);