Кнопка отправки внутри компонента 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>