Наблюдаемый контент подписки не выполняется

Кнопка отправки внутри компонента HTML запускает функцию с именем addCollaborators(). Соответствующий код приведен ниже:

компонент.ts

emails: string[] = [];

constructor(public userService: UserService) {}

// This is the function called from the HTML
addCollaborators() {
  this.emails.forEach(email => {
    const user = this.getUserFromEmail(email);
    if (user instanceof User) {
      this.counterService.someDbFunction();
    }
  });

  this.dialogRef.close();
}

getUserFromEmail(emailAddress: string): User | void {
  console.log("Code is reached here");
  this.userService.users$.subscribe((users: User[]) => {
    console.log("This is never reached");
    for (const user of users) {
      if ( /* Some boolean logic */ ) {
        return user;
      }
    }
  });
}

user.service.ts

users$: Observable<User[]>;

Как описано в операторах журнала, ни один из кодов подписки внутри getUserFromEmail не выполняется. Это видно по тому, что ни одна из операций не выполняется, а сообщение отсутствует в консоли. Наблюдаемый объект users$ заполняется в конструкторе службы и успешно подписывается в других местах. Фактически, этот оператор внутри конструктора component.ts выполняется успешно:

this.userService.users$.subscribe(users => console.log(users));

Дайте мне знать, если какая-либо другая информация будет полезна, и спасибо заранее.

Обновлять

Следующее ничего не регистрирует, поэтому это может быть более фундаментальная проблема, чем считалось ранее.

addCollaborators() {
  console.log("I am logged");
  this.userService.users$.subscribe(users => console.log("I am not", users));
}

Соответствующий HTML:

<button mat-fab
        (click)="addCollaborators()"
        class="add-collaborators">
<mat-icon>group_add</mat-icon>
</button>

1
589
1

Ответ:

Проверьте рабочий стекблиц здесь; Можете ли вы попробовать расширить этот пример своим кодом, чтобы мы увидели, получаете ли вы какие-либо ошибки...

Пожалуйста, добавьте блок Ошибка и Ну наконец то (как показано ниже) в свою подписку, чтобы увидеть, есть ли какие-либо ошибки...

  getUserFromEmail(emailAddress: string): User | void {
    console.log("Code is reached here for "+ emailAddress);
    this.userService.users$().subscribe(

  /* DATA BLOCK */    
  (users: User[]) => 
  {
  console.log("This is never reached");
    for (const user of users) {
      /* if ( //Some boolean logic ) { return user; } */
    }
  } 
  /* ERROR BLOCK */    
  , errr => { console.log(errr); }
  /* FINALLY BLOCK */    
  , () => { console.log("this is the finally block");}
);

}