forkJoin()没有发出调用,而其参与者发出良好的声音

asd*_*asd 2 rxjs angular

突击

在下面的代码中,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 
  }
}
Run Code Online (Sandbox Code Playgroud)

mar*_*tin 6

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

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

例如,您可以在每个Observable源之前添加一个前缀take(1),使它在第一次发射后完成,或者实际上您正在寻找combineLatest(...).pipe(take(1))