Форма регенерации при каждом взаимодействии, угловые формы - PullRequest
0 голосов
/ 27 марта 2019

У меня проблема с угловой формой. Проблема заключается в флажке, который содержит некоторые значения (около 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);
    }

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

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 Ответ

0 голосов
/ 27 марта 2019
  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..
}
...