Справочное значение подписки Angular RxJS

Обновлять: Раньше в вопросе не было четкого объяснения, что объект FormGroup является частью FormArray.


Я слушаю изменения значения объекта FormGroup, который является частью FormArray, однако переданное значение кажется просто значением, которое не ссылается на исходный объект FormGroup.

formArrayObject.controls.forEach(formGroupObject => {
    formGroupObject
        .valueChanges
        .pipe(takeUntil(this.someUnsubscriber$))
        .subscribe(updatedFormGroupObject => {

            // this doesn't update formGroupObject
            updatedFormGroupObject.anotherProperty = true;
    });
}

Как обновить другие свойства обновленного formGroupObject внутри обратного вызова подписки?

Проблема в том, что вы не знаете, какой formGroupObject был обновлен, поэтому не знаете, какой formGroupObject обновить.

Я бы хотел, чтобы updatedFormGroupObject вернул ссылку на обновленный объект, но этого не произошло.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

AbstractControl не будет обновляться после изменения свойств, исходящих от valueChanges.

Вам нужно будет обновить значение формы самостоятельно:

formGroupObject.patchValue({
   anotherProperty: true,
});

... или, может быть, вы хотите использовать setValue(), но в этом случае это должно быть то же самое:

formGroupObject.setValue({
   ...updatedFormGroupObject,
   anotherProperty: true,
});

Спасибо @martin! это работает, но я понял, что неправильно объяснил проблему. formGroupObject является частью FormArray, поэтому часть проблемы заключается в том, чтобы узнать, какой элемент массива был обновлен. я обновлю вопрос

Irwan 17.03.2022 11:18

Это почти то же самое, вы можете получить индекс того, что formGroupObject излучается из forEach((formGroupObject, index) => ...), а затем вызывать formArrayObject.at(index).patchValue(...)

martin 17.03.2022 11:43

Другие вопросы по теме