学习observable和Angular2。我想找出在多个Angular2组件之间共享可观测数据的最佳实践。由于可观察的默认值不是多播。因此,我的应用的不同部分中的每个订阅都会打开一个新的流(再次调用我的API服务器!)。另外,我需要分享价值并获得该可观察值的最新价值。我听到人们使用行为主题。但是这真是令人困惑,我找不到一个很好的例子。下面是我如何处理这在我authService:在Angular2中共享组件/组播之间的可观察性
userInfo$: Observable<User>;
this.userInfo$ = this.authInfo$
.switchMap(authInfo => this.findUserByuid(authInfo.$uid)) // finding user info base on authInfo turn or not.
.publishReplay(1).refCount();
而且在我Angular2组件,我这样做:
this.authService.userInfo$.subscribe(user => {
console.log (user);
this.user = user;
})
一切正常。但我不知道在这种情况下可以使用行为主体吗?我是否通过在所有我的组件中共享userInfo $来做所有事情(我所有需要userinfo $的组件都将执行上述代码来订阅它)?如果你想使用BehaviorSubject
你可以使用.publishBehavior('default')
这是一个速记
.multicast(new ReplaySubject(1))
: