ForkJoin не работает при прослушивании нескольких наблюдаемых из нескольких форм valueChanges - PullRequest
0 голосов
/ 08 апреля 2020

Я делаю страницу, которая содержит три разные формы с использованием Reactive Forms. Я хотел бы выслушать все их изменения и сделать логи c, если они все действительны. Я проверил на форуме и увидел, что мне пришлось использовать forkJoin. Проблема в том, что изменения вызываются при каждой загрузке страницы, но не запускаются при изменении моих значений.

forkJoin([
  of(this.thirdStepFormFirstContainer.valueChanges),
  of(this.thirdStepFormSecondContainer.valueChanges),
  of(this.thirdStepFormThirdContainer.valueChanges)
]).subscribe(() => {
  console.log('One of the three has changed');
});

valueChanges возвращает Observable, forkJoin не должен запускаться при загрузке страницы, только при изменениях .

Кто-нибудь знает, как я мог решить эту проблему?

Большое спасибо :)

1 Ответ

2 голосов
/ 08 апреля 2020

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

merge(
  this.thirdStepFormFirstContainer.valueChanges,
  this.thirdStepFormSecondContainer.valueChanges,
  this.thirdStepFormThirdContainer.valueChanges
).subscribe(() => {
  console.log('One of the three has changed');
});

merge будет прослушивать изменения во всех трех формах элементы управления, и ваш обратный вызов подписки будет уведомлен, когда любой из них изменит значение.

DEMO: https://stackblitz.com/edit/angular-zm9du9

...