我尝试使用带有 BehaviorSubject 的服务在我的根组件和组件之间共享数据。
这里是服务:
@Injectable({
providedIn: 'root'
})
export class UserService {
public loggedUser = new BehaviorSubject<string>("INITIAL");
castUser = this.loggedUser.asObservable();
editUser(newLoggedUser : string){
this.loggedUser.next(newLoggedUser);
}}
在我的 RootComponent 上我有:
this.userService.editUser("HELLO");
在我的其他组件上(我将此代码放在 ngOnInit 函数或 ngAfterViewInit 中,但它是相同的):
constructor(private userService : UserService)
{
this.userService.castUser.subscribe(userFirstname => {
console.log("UserProfileComponent constructor userFirstname = " + userFirstname); // always display "INITIAL"
});
}
问题是当调用订阅函数时,它应该显示 HELLO,而不是 INITIAL。它不显示新值。
一个想法?
谢谢