Невозможно передать значение Observable в компонент других модулей с помощью общих служб

Пожалуйста, проверьте это репозиторий GitHub https://github.com/nileshzala005/Service-demo

userService зарегистрирован на корневом уровне.

Я бы хотел получить getUserLogin наблюдаемая стоимость в SharedModuleс UserComponent. Когда пользователь нажимает кнопку Отправить значение пользовательскому компоненту изHomeComponent что заявлено в HomeModule.

UserService на корневом уровне:

userLogin = new Subject<string>();

  constructor() { }
  sendUserLogin(user: string) {
    console.log("value received at user service ", user);
    this.userLogin.next(user);
  }
  getUserLogin(): Observable<string> {
    return this.userLogin.asObservable();
  }

HomeComponent в HomeModule:

export class HomeComponent implements OnInit {

  constructor(private userService: UserService) {

  }

  ngOnInit() {
  }
  onClick() {
    console.log("value is send from home component", "Nilesh")
    this.userService.sendUserLogin("Nilesh");
  }

}

UserComponent в SharedModule:

export class UserComponent implements OnInit {

  constructor(private userService: UserService) { }

  ngOnInit() {
    this.userService.getUserLogin().subscribe(res => {
          /// here it should receive but not able to get it
      console.log("user component should get value here ", res);
    });
  }

}

журнал консоли

2 ответа

Вам нужно будет использовать BehaviorSubject вместо Subject, чтобы получить значение. Прочтите этот пост для объяснения. Синтаксис немного устарел, но по-прежнему следует той же концепции

В чем разница между Subject и BehaviorSubject?

Попробуй использовать BehaviorSubject вместо того Subject. Он отправит последнее значение в подписку, даже если подписка была сделана после того, как значение было отправлено.

Может быть проблема, что вы подписываетесь после того, как значение было отправлено.

Другие вопросы по тегам