и компонент Б. Компонент Б чайлд компонента А
<----------------------------------------------------------------->
<componentA
(returnPaymentForm)="setFormA($event)">
</componentA>
<----------------------------------------------------------------->
В компаненте Б есть formGroup formA, в виде поля класса и есть
@Output()
returnFormA: EventEmitter<any>;
Когда я вызываю this.returnPaymentForm.emit(formA);
в компоненте А срабатывает метод
setFormA( localFormA:any ){}
в этой переменной localFormA есть поле , я меняю его значение
localFormA.priceValue ='someValue'
и отправляю форму на бекенд.
И трабл в том, что это значение также присваивается полю компонента Б formA.priceValue
Пробовал в методе setFormA( localFormA:any ){}
создавать локальную переменную по типу
let secondFormA = locaFormA;
и уже у secondFormA менять поле priceValue, но результат тот же самый, поле priceValue так же меняется и в компоненте Б у поля formA.priceValue.
Я так понимаю, это из-за сыллочного типа, т.к. когда я делаю
let secondFormA = locaFormA;
то secondFormA ссылается на тот же участок памяти, что и localFormA.
Надеюсь норм объяснил трабл, есть у кого идеи, как это можно обойти?
Похоже на треш какой-то и костыли. Думаю можно это переписать нормально. Без EventEmitter<any> и let secondFormA = {...new NgForm(), ...locaFormA} Как минимум можно создание формы в сервис вынести. Либо объединить в одну форму. Непонятно в чем суть задачи. И почему в родительском и дочернем компоненте 2 одинаковые формы.
Лучше расскажи задачу. Т.к. в текущей постановке вижу только два варианта: 1. Полностью клонировать форму/значения 2. Хранить измененное значение в другом поле
Обсуждают сегодня