Регистрация формы при каждом взаимодействии, угловые формы

#javascript #angular #formarray

#javascript #угловые #formarray

Вопрос:

У меня проблема с угловой формой. Проблема заключается в флажке, который содержит некоторые значения (около 10). У меня есть элемент, который я помещаю в эту форму с некоторыми уже выбранными значениями. Итак, для чего я использую форму, так это для редактирования / обновления этого элемента.

Мой флажок прямо сейчас может показывать, какие из значений в флажке были выбраны до редактирования. пример здесь:https://gyazo.com/3cda89f3fc5c42de690fd8803274990b (наведите курсор, чтобы показать)

Но когда я пытаюсь выбрать новое значение флажка, он просто каждый раз восстанавливает весь флажок, и я не знаю почему.

Возможно, я неправильно заполняю форму, я создаю форму следующим образом:

 <div class="form-group row">
        <div class="col">
            <label for="">Typer af data der indhentes:</label>
            <div formArrayName="DataTypes"
                 *ngFor="let test of this.createWhatItemData().controls; let j=index"
                 class="form-group">
                <div>
                    <div class="form-check">
                        <label class="form-check-label">
                            <input type="hidden" />
                            <input type="checkbox" class="form-check-input" [checked]="test.value.selected" />
                            {{whatItemDataTypes[j].Name}}
                        </label>
                    </div>
                </div>
            </div>
        </div>
    </div>
  

и затем он инициализируется и заполняется следующим образом:

 private initFormWhatComponent() {
        this.form2 = this.formBuilder2.group({
            ConsentWhatItemDirection: this.whatItem.ConsentWhatItemDirection,
            ConsentWhatItemType: this.whatItem.ConsentWhatItemType,
            OrganizationIdentifier: this.whatItem.OrganizationIdentifier,
            Name: this.whatItem.Name,
            Description: this.whatItem.Description,
            DataTypes: this.formBuilder2.array(this.whatItem.DataTypes)
        });

        this.addWhatItemFormGroupWhatComponent(this.whatItem);
    }
  

Это делается для того, чтобы поместить все готовые выбранные значения в мой флажок, и если я зарегистрирую консоль, например. «тест» в этой функции регистрируется каждый раз, когда я взаимодействую с формой.

 createWhatItemData() {
        let _formArray = this.formBuilder2.array(
            this.whatItemDataTypes.map(s => {
                return this.formBuilder2.group({
                    selected: this.whatItem.DataTypes.some(x => x.Id == s.Id),
                    Id: s.Id,
                });
            })
        );
        return _formArray
    }
  

Доступные для выбора значения извлекаются из базы данных, а затем объединяются вместе со значениями элементов, отправляемыми в форму.

кто-нибудь может мне помочь с установкой флажка, чтобы я мог выбирать новые значения, а затем обновлять свой элемент?

Заранее спасибо.

Ответ №1:

   private initFormWhatComponent() {
    this.form2 = this.formBuilder2.group({
        ConsentWhatItemDirection: this.whatItem.ConsentWhatItemDirection,
        ConsentWhatItemType: this.whatItem.ConsentWhatItemType,
        OrganizationIdentifier: this.whatItem.OrganizationIdentifier,
        Name: this.whatItem.Name,
        Description: this.whatItem.Description,
        DataTypes: this.formBuilder2.array(this.whatItem.DataTypes)
    });

    this.addWhatItemFormGroupWhatComponent(this.whatItem);
    //return anything in here..
}
  

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

1. что насчет этого?