有条件的可观测链

问题描述

所以我有3个可观察值:updateCustomUserData $,updateEmail $,updatePassword $。 和profileEditForm。 如果表单的适当字段已更改,我需要更新配置文件数据; 我认为它应该像这样:

updateCustomUserData$(data) {
  return iif(() => customDataWasChanged(),apiService.updateCustomUserData())
}

// updateEmail$ and updatePassword$ is similar


onSubmit() {
  this.updateCustomUserData$(formData).pipe(
    concatMap(() => this.updateEmail$(newEmail))),concatMap(() => this.updatePassword$(newPassword),)
  .subscribe(() => doSomething())
}

但是它不起作用。如果自定义数据未更改,并且密码或电子邮件没有更改-updateEmail和updatePassword未执行。 有人可以帮忙吗? 附言对不起,我的英语:)

解决方法

何时调用onSubmit方法?
我认为您应该定义ngOnInit而不是onSubmit。

export class AppComponent implements OnInit {
  ngOnInit() {
    this.updateCustomUserData$(formData).pipe(
      concatMap(() => this.updateEmail$(newEmail))),concatMap(() => this.updatePassword$(newPassword),)
    .subscribe(() => doSomething())  }
}