Наблюдаемый UPDATE BehaviorSubject с использованием значения ReplaySubject .. Возможно ли это? - PullRequest
0 голосов
/ 02 декабря 2018

HI Я работаю над Angular 6 Project простой список задач - мой сценарий таков: у меня есть группы задач на боковой панели навигации, когда выбирается одна из них, обновляется todo.component для отображения этой групповой задачи

У меня есть служба Return Observable Object «Groups Class» в виде ReplaySubject , чтобы предоставить к ней общий доступ и перебросить все компоненты в моем приложении, где оно работает, но у меня есть одна проблема, когда мне нужно использовать этот объект в firestoreФункция запроса для получения некоторых данных не работает ??

вот мой код:

1- GlobaleVariable Class:

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);
 }

служба 3-todo

note GV - это объект из GlobaleVariable , вот проблема, мне нужно установить параметр id = текущее выбранное значение идентификатора groub, когда я устанавливаюстатическое число работает, но когда я пишу это, как сделано ниже, это не ??

    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);
      }

Я спросил befoо совместном объекте в этом вопросе , так что вы можете увидеть скриншот из моего приложения благодаря

...