如何通过另一个组件中的 behaviorsubject 获取最后发出的值?

How to get the last emitted value through behaviorsubject in another component?

通过使用 behaviorsubject,我能够获得同一组件中的最后一个发射值,但在导航到另一个组件后,我获得默认值(不是最后发射的值)

我使用 BehaviorSubject 更新一个组件中的值,并尝试在另一个组件中获取更新后的值。

第一个组件

bs = new BehaviorSubject<string>('default value');
currentMessage = this.bs.asObservable();
submit(){
   this.bs.next('updated value');
   this.bs.subscribe(message=> console.log(message));
   this.router.navigate(['../new-view']);
  }

另一个组件

ngOnInit() {
    this.firstComponent.currentMessage.subscribe(message=> 
console.log(message));
  }

在新的 view/another 组件中我得到了默认值,但是我期待更新的值。

我得到更新值的第一个组件。

你能帮忙吗!

您应该在服务中使用 bs = new BehaviorSubject<string>('default value'); 并将该服务注入所需的组件以共享数据。

您没有在第二个组件中获得 新值的原因 是因为当您离开前一个组件的范围并碰巧加载第二个组件时,前一个组件的作用域被破坏了从 BehaviorSubject 启动时间获取值。在您的 BehaviorSubject 初始化时,它的所有订阅者都会获得第一个值。

如果您使用服务来执行此操作,则您的所有组件都可以获得更新后的值。