forkJoin不工作。但也没有错误

时间:2018-02-15 03:27:07

标签: angular rxjs ionic3 google-cloud-firestore angularfire2

更新

很奇怪。我必须使用.valueChanges().pipe(first())。然后它工作正常。这种行为的任何线索?是firestore问题还是angularfire2?如果我使用该模式,那么我将错过这里的实时数据库功能。那我该怎么办呢?

看来我在这里做错了。你能告诉我问题在哪里吗?它没有任何错误。但它也没有用。

注意: this.budgetGroups$没有任何值。但this.defaultBudgetGroups$有价值。任何线索?

选择预算-group.ts

import { Observable } from 'rxjs/Observable';
import { forkJoin } from 'rxjs/observable/forkJoin';
import { concat } from 'lodash';

budgetGroups$: Observable<BudgetGroup[]>; defaultBudgetGroups$: Observable<BudgetGroup[]>

 constructor(){}

 ionViewDidEnter() {
   this.getAllBudgetGroups();
 }

 getAllBudgetGroups() {
  this.budgetGroups$ = this.budgetGroupProvider.getAllTempBudgetGroups().valueChanges();
  this.defaultBudgetGroups$ = this.budgetGroupProvider.getDefaultBudgetGroups().valueChanges();

  forkJoin([this.budgetGroups$, this.defaultBudgetGroups$]).subscribe(res => {
      this.budgetGroupSortedList = concat(res[0], res[1]);
    }, err => {
      console.log(err);
   });
  }

provider.ts

  getDefaultBudgetGroups(): AngularFirestoreCollection<BudgetGroup> {
    return this.fireStore.collection(`defaultBudgetGroups`);
  }

 getAllTempBudgetGroups(): AngularFirestoreCollection<BudgetGroup> {
    return this.fireStore.collection(`members/${this.authenticationProvider.member.id}/budgetGroups`);
  }

1 个答案:

答案 0 :(得分:1)

应该是:

forkJoin(this.budgetGroups$, this.defaultBudgetGroups$).subscribe(res => {
    this.budgetGroupSortedList = concat(res[0], res[1]);
  }, err => {
     console.log(err);
 });
}

**注意删除forkJoin参数的解构数组表示法。

或者,您可以这样做:

forkJoin([this.budgetGroups$, this.defaultBudgetGroups$]).subscribe((result1, result2) => {
    this.budgetGroupSortedList = concat(result1, result2);
  }, err => {
     console.log(err);
 });
}

**请注意,传递给subscribe处理程序的参数不再是数组

基本上,forkJoin的用法是:

forkJoin(array).subscribe((p1,p2,p3,etc)=> {...})

forkJoin(p1,p2,p3,etc).subscribe((array)=> {...})