更新
很奇怪。我必须使用.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`);
}
答案 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)=> {...})