当其参与者发出良好声音时,forkJoin()没有发出呼叫

时间:2019-07-25 11:33:25

标签: 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 
  }
}

1 个答案:

答案 0 :(得分:6)

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

这是您遇到的问题,因为valueChanges在内部实现为 从未完成的Subject

例如,您可以在{ob1}}的每个“可观察的源”之前添加前缀,使其在首次发射后完成,或者实际上您正在寻找take(1)