Получать значения из группы флажков Angular Material?

#javascript #angular #checkbox #angular-material2

#javascript #angular #флажок #angular-material2

Вопрос:

Я пытаюсь выяснить, как получить выбранные значения из группы флажков Angular (7) Material.

Допустим, у меня есть область в форме «вкусы» и 3 флажка со значениями «шоколад», «ваниль» и «клубника».

 <h3>Flavors</h3>
<mat-checkbox value="chocolate">Chocolate</mat-checkbox>
<mat-checkbox value="vanilla">Vanilla</mat-checkbox>
<mat-checkbox value="strawberry">Strawberry</mat-checkbox>
  

Поскольку флажки установлены и выключены, я хочу обновить переменную (модель) «flavorsAvailable».

Это просто сделать с помощью mat-radio-groups, поскольку это просто ngModel для элемента group. Но как мне управлять флажками?

Примечание: я не хочу использовать угловой список выбора материала; это только для форм.

Комментарии:

1. Какой тип flavorsAvailable ? Что должно произойти с моделью, когда вы устанавливаете и снимаете свои флажки?

Ответ №1:

@Steve, список выбора материала, который вы можете использовать [(ngModel)]=»переменная» [FormControl]=»управление» или в форме, formGroupName=»свойство». В любом случае вы получаете массив с выбранными параметрами. Я не представляю лучшего способа управления флажком.

Ну, вы можете использовать mat-check самостоятельно, это только use [(ngModel)] . например, если у вас есть массив логических значений. Да, не имеет смысла [значение] в mat-check-box, единственными допустимыми значениями являются: true или false

 variable:boolean[]=[]
  

Вы можете использовать

 <mat-checkbox [(ngModel)]="variable[0]" value="chocolate">Chocolate</mat-checkbox>
<mat-checkbox [(ngModel)]="variable[1]" value="vanilla">Vanilla</mat-checkbox>
<mat-checkbox [(ngModel)]="variable[2]" value="strawberry">Strawberry</mat-checkbox>
{{variable|json}}
  

Комментарии:

1. Имеет смысл, хотя это немного странно. Кроме того, я использовал variable = [] . Спасибо.

Ответ №2:

Посмотрите, поможет ли это вам:

 flavorsAvailable: any[] = [
    { 'id': '0', 'name': 'chocolate' },
    { 'id': '1', 'name': 'vanilla' }
];

getCheckeds(ev): any[] {
  return this.flavorsAvailable.filter(x => x.state = ev.target.checked);
}
  

Если это тот тип списка, который вы упомянули в «Я не хочу использовать список выбора Angular Material; это только для forms.«. Them, это не имеет смысла, вам нужно будет выбирать один за другим в 3 разных ngModels…