使用ReplaySubject值可观察到的UPDATE BehaviorSubject ..可能吗?

时间:2018-12-02 12:53:45

标签: rxjs observable angular6 behaviorsubject

HI,我正在从事 Angular 6项目 简单的待办事项列表-我的情况是侧面导航栏上有待办事项组 当选择其中一个todo.component更新以显示此分组任务时

我有一个“ Groups Class”返回可观察对象的服务作为 ReplaySubject 以进行共享和访问,将所有组件扔到了我的应用程序中,但它仍在工作,但是我有一个问题需要使用Firestore Query函数中的对象获取一些不起作用的数据?

这是我的代码:

1- GlobaleVariable类:

sharedCategory$ = new ReplaySubject<Groups>(1);

updateCategoryValue(g: Groups) {

return this.sharedCategory$.next(g);

}

2- OnClick导航栏事件:

  onSelect(grouup: Groups): void {
    this.GV.updateCategoryValue(grouup);
    this.GV.sharedCategory$.subscribe(g => this.selectedGroup = g);
 }

三项服务

注释 GV GlobaleVariable 中的对象 这是我需要设置id参数=当前选定的groub id值的问题 当我设置一个静态数字时,它可以工作,但是当我写一个静态数字时,就像下面所做的那样,不是??

    constructor(private todoDataService: TodoDataService,
    private groupservice: GroupsDataService,
    private afs: AngularFirestore, public GV: GlobalVariblesClass
     ) {
    // alert("todo"); 
    //Get shared Group Object
    this.GV.sharedCategory$.subscribe(g => {
      if (g != null) {
        debugger;
        this.GV.sharedCategory$.subscribe(c => { this.selectedGroup = c; 
        if (this.selectedGroup != null) {
          alert('next');
          this.nextgroup(g.id);
          return;
        }
      }
    });
//---------set group id = 1 by default --------
    this.todogroup$ = new BehaviorSubject(1);

      this.newtodos$ = this.todogroup$.pipe(
        switchMap(group =>
        this.afs.collection<Todo>('todos', ref =>
          ref.where('group', '==', group))
          .valueChanges())
       );//end pipe
     }
   //------update groupid------------
  nextgroup(id: number) {
    debugger;
         alert("id is :" + id);
        return this.todogroup$.next(id);
      }

我之前曾问过关于Question上共享对象的信息,所以您可以从我的应用中查看屏幕截图 谢谢

0 个答案:

没有答案