Невозможно передать значение 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, чтобы получить значение. Прочтите этот пост для объяснения. Синтаксис немного устарел, но по-прежнему следует той же концепции
Попробуй использовать BehaviorSubject
вместо того Subject
. Он отправит последнее значение в подписку, даже если подписка была сделана после того, как значение было отправлено.
Может быть проблема, что вы подписываетесь после того, как значение было отправлено.