Наблюдаемый контент подписки не выполняется - PullRequest
0 голосов
/ 28 января 2019

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

component.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 Ответ

0 голосов
/ 28 января 2019

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

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

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

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...