【发布时间】:2020-03-27 12:30:20
【问题描述】:
我的服务有一个AngularFirestore.collection Observable。
...
export class AppFirestoreService {
public rootCategories$: Observable<Category[]>;
constructor(private afs: AngularFirestore) {
this.rootCategories$ = this.afs.collection<Category>(`categories`).snapshotChanges()
.pip(
...
);
}
}
问题在于rootCategories$ 在多个组件中订阅,而我需要更新到另一个组件的路径。
所以我想用新的Observable 替换 rootCategories 变量,但我不确定旧的Observable 是否会被清除内存。
有没有一种方法可以将路径作为变量而不创建另一个 Observable 并将旧的(或其订阅)留在内存中。
谢谢
你能指导我正确的方法来解决这个问题吗?
编辑澄清:
如何使用新路径更改当前 Observable rootCategories$,并使用新发出的值通知旧订阅?
【问题讨论】:
-
所以你想分享 rootCategories$?
-
@FanCheung 它已经共享,但我想使用其他路径更改来自 Observable 的结果。
-
您可以使用 rootCategories 来为此目的组成一个新的流,而不影响现有的订阅。 myNewStream=$this.rootCategories$.pipe(.....)
-
或者您是否希望动态更改收集路径?
-
将其设置为函数
rootCategories=(path)=>this.afs.collection(path).snapshotChanges()
标签: angular rxjs angularfire2