Angular FormGroup получает массив выбранных флажков

#arrays #angular #typescript

#массивы #angular #машинописный текст

Вопрос:

Как я могу получить массив выбранных флажков? Все, что я получаю, возвращается true. Это мой код:

   <form name="form" [formGroup]="form" (ngSubmit)="postData()">
    <div *ngFor="let customers of customerslist$">
      <div *ngFor="let item of customers.data">
        {{ item.id }} <input type="checkbox" formControlName="company" value="{{ item.company }}">
      </div>
    </div>
    <button class="btn btn-primary" [disabled]="!form.valid"><i class="fa fa-user"></i> send</button>
  </form>
  

Компонент:

  form: FormGroup;
  constructor(private customerdataService: CustomerDataService,private router: Router,private formBuilder:FormBuilder) { 
    this.form = this.formBuilder.group({
      company: []
    });
  }
  

Как выбрать выбранные элементы в postData()

   postData() {
    const selectedCustomer = this.form.value.company
      
    console.log(selectedCustomer);
  }
  

Ответ №1:

В вашем коде у вас есть только 1 formControlName=»company». Несмотря на то, что вы создали несколько флажков ввода, все они имеют одно и то же имя — «company». Я считаю, что именно по этой причине вы получаете только одно значение вместо массива. Я думаю, вы можете попробовать использовать item.company внутри вашего «formControlName», чтобы иметь разные имена. Например, этот.

 {{ item.id }} <input type="checkbox" formControlName="item.company" value="{{ item.company }}">
  

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

1. Да, это необходимо. они используются как массив