#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. что насчет этого?