angular - forkJoin() 未发出调用而其参与者正在发出罚款

标签 angular rxjs

stackblitz

在下面的代码中,this.form.valueChangesthis.form.get('name').valueChanges 发射正常。但是 forkJoin 这些都不起作用。有人可以请教吗?

export class AppComponent  {
  name = 'Angular';
  form = this.formBuilder.group({
    name:'test'
  })
  constructor(private formBuilder: FormBuilder){

  }

  ngOnInit(){

    forkJoin(this.form.valueChanges, this.form.get('name').valueChanges)
    .subscribe(x=>alert(x))//NOT working

    this.form.valueChanges.subscribe((x)=>alert(JSON.stringify(x)));//fine 
    this.form.get('name').valueChanges.subscribe((x)=>alert(x))//fine 
  }
}

最佳答案

forkJoin 仅在其所有源 Observable 至少发出一次且全部完成后才发出。

这就是您遇到的问题,因为 valueChanges 在内部实现为 一个永远不会完成的 Subject

例如,您可以在每个源 Observable 前加上 take(1),使其在第一次发射后完成,或者您实际上正在寻找 combineLatest(...)。管道(取(1))

关于angular - forkJoin() 未发出调用而其参与者正在发出罚款,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57201013/

相关文章:

angular - rxjs/可观察到的 : Execute functions one by one and pass parameters of functions as result of previous function

angular - 无法从路由 URL 读取参数

rxjs - 为什么 `of(undefined) emit, but ` of()` 没有?

angular - 如何在 typescript 中定义观察者的类型

angular - Rxjs同步?

Angular 2 beta – 选择不工作(Chrome 除外)

angular - 根据最后发出的可观察值创建一个可观察值

typescript - 如何动态/实用地生成 Angular 路由配置?

javascript - 失败后重试 forkjoin 调用

javascript - 使用 RxJS 处理未知数量的连续 HTTP 请求