Запретить выбор мульти материала при выборе значения по умолчанию - Angular 7 - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть множественный выбор материала, где я устанавливаю условно значение по умолчанию в файле TS. Я также использую onSelectionChange, чтобы обнаружить изменения в выборе. Проблема в том, что когда я устанавливаю значение по умолчанию для запуска onSelectionChange, как я могу предотвратить это?

HTML

<mat-select [compareWith]="compareWithFunc" [(value)]="hidden" multiple>
  <mat-option
    *ngFor="let value of values"
    (onSelectionChange)="onSelectionChanged($event, value)"
    [value]="clause"
    >{{ value.name }}</mat-option
  >
</mat-select> 

TS

 public onSelectionChanged(event: MatOptionSelectionChange, clause:any): void {
    if (event.source.selected) {}
  }

  public compareWithFunc(a, b) {
    return a.name === b.name;
  }

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Вы устанавливаете значение mat-select с помощью двойной привязки [(value)]="hidden".
Итак, если вы измените свойство hidden из своего кода .ts, onSelectionChange будет запущено, так как значение изменилось.
Я бы порекомендовал использовать стратегию двойного связывания или метод захвата событий для предотвращения этих проблем.

0 голосов
/ 07 апреля 2020

Я не совсем уверен, в чем вопрос. Вы пытаетесь условно установить одно из значений параметров? Или вы пытаетесь условно установить значение самого ящика. [(values)]="hidden" представляет значение поля. Поэтому, если это значение соответствует одному из значений параметра, оно будет отображаться по умолчанию. Добавьте дополнительную информацию или пример stackblitz.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...