[DSC-75] Fix issue while deleting multiple qualdrop value

This commit is contained in:
Giuseppe Digilio
2021-05-28 18:49:47 +02:00
parent 3c0cb33bc7
commit 2dfed863ed
2 changed files with 11 additions and 7 deletions

View File

@@ -309,9 +309,16 @@ export class FormComponent implements OnDestroy, OnInit {
removeItem($event, arrayContext: DynamicFormArrayModel, index: number): void {
const formArrayControl = this.formGroup.get(this.formBuilderService.getPath(arrayContext)) as FormArray;
const event = this.getEvent($event, arrayContext, index, 'remove');
if (this.formBuilderService.isQualdropGroup(event.model as DynamicFormControlModel)) {
// In case of qualdrop value remove event must be dispatched before removing the control from array
this.removeArrayItem.emit(event);
}
this.formBuilderService.removeFormArrayGroup(index, formArrayControl, arrayContext);
this.formService.changeForm(this.formId, this.formModel);
this.removeArrayItem.emit(event);
if (!this.formBuilderService.isQualdropGroup(event.model as DynamicFormControlModel)) {
// dispatch remove event for any field type except for qualdrop value
this.removeArrayItem.emit(event);
}
}
insertItem($event, arrayContext: DynamicFormArrayModel, index: number): void {

View File

@@ -298,17 +298,14 @@ export class SectionFormOperationsService {
event: DynamicFormControlEvent,
previousValue: FormFieldPreviousValueObject): void {
if (event.context && event.context instanceof DynamicFormArrayGroupModel) {
// Model is a DynamicRowArrayModel
this.handleArrayGroupPatch(pathCombiner, event, (event as any).context.context, previousValue);
return;
}
const path = this.getFieldPathFromEvent(event);
const value = this.getFieldValueFromChangeEvent(event);
console.log(value);
if (this.formBuilder.isQualdropGroup(event.model as DynamicFormControlModel)) {
this.dispatchOperationsFromMap(this.getQualdropValueMap(event), pathCombiner, event, previousValue);
} else if (event.context && event.context instanceof DynamicFormArrayGroupModel) {
// Model is a DynamicRowArrayModel
this.handleArrayGroupPatch(pathCombiner, event, (event as any).context.context, previousValue);
} else if ((isNotEmpty(value) && typeof value === 'string') || (isNotEmpty(value) && value instanceof FormFieldMetadataValueObject && value.hasValue())) {
this.operationsBuilder.remove(pathCombiner.getPath(path));
}