无法使用共享服务将Observable的值获取到其他模块组件中

问题描述 投票:0回答:1

请检查此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();
  }

homeModules中的HomeComponent

export class HomeComponent implements OnInit {

  constructor(private userService: UserService) {

  }

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

}

共享模块中的用户组件

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

}

请在根级别注册此GitHub存储库https://github.com/nileshzala005/Service-demo userService。我想将getUserLogin可观察的值获取到SharedModule的UserComponent中。...

angular rxjs observable angular-services shared-module
1个回答
1
投票

您需要使用BehaviorSubject而不是Subject来获取发出的值。检查这篇文章的解释。语法有些过时,但仍遵循相同的概念


0
投票

尝试使用BehaviorSubject代替Subject。即使将在发出值后进行订阅,也会将最后一个值发送到订阅。

© www.soinside.com 2019 - 2024. All rights reserved.