Удаление элементов из углового выбора материала - PullRequest
0 голосов
/ 05 января 2019

Я использую 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);

1 Ответ

0 голосов
/ 05 января 2019

FormControl.value - только для чтения , вместо него следует использовать FormControl.setValue:

this.codeSelect.setValue(this.codeSelect.value.slice(1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...