通过使用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));
}
在新视图/其他组件中,我获得了默认值,但是我期待更新的值。
我首先获得更新后的值。
请您帮忙!
答案 0 :(得分:3)
您应该在服务中使用bs = new BehaviorSubject<string>('default value');
,并将服务注入到需要的组件中以共享数据。
未在第二个组件中获得新值的原因是,当您离开第二个组件并从第二个组件中获取值的第二个组件时,前一个组件的作用域被破坏了。 BehaviorSubject
启动时间。在BehaviorSubject
初始化时,所有订阅者都将获得第一个值。
如果您使用服务来执行此操作,则所有组件都可以获取更新后的值。