gpt4 book ai didi

angular - 共享服务中的 BehaviorSubject 不会将更新的值返回给组件

转载 作者:行者123 更新时间:2023-12-03 17:36:16 25 4
gpt4 key购买 nike

我有 2 个组件:TopBarComponentUserDetailsComponent . TopBarComponent对所有页面通用,因此与 UserDetailsComponent 一起加载还。我添加了一个名为 UserDetailsService 的共享服务.

UserDetailsS​​ervice.ts:

import { Injectable } from '@angular/core';
import { BehaviorSubject } from "rxjs/BehaviorSubject";
import { Observable } from "rxjs/Observable";

@Injectable()
export class UserDetailsService {
public userData = new BehaviorSubject({});

public setUserDetails(data: any) {
this.userData.next(data);
}

public getUserDetails(): Observable<any> {
return this.userData.asObservable();
}
}

我在 UserDetailsService 中设置 API 响应数据来自 TopBarComponent
TopBarComponent.ts
//setting data in Shared Service

this.userDetailsService.setUserDetails(result.data);

当我订阅服务中的 getter 方法时,它总是只返回 BehaviorSubject 的初始值.

UserDetailsComponent.ts
this.userDetailsService.getUserDetails().subscribe(
data => {
console.log(data); //prints '{}' always.
},
error => this.error(error)
);

当我在 UserDetailsService 中获得更新值时,我总是得到 BehaviorSubject 的初始值.

我在哪里做错了?任何帮助将不胜感激。

最佳答案

尝试将服务标记为全局。

@Injectable({
providedIn: 'root',
})
export class UserDetailsService

这应该可以解决问题。如果没有,则在导入所有组件或其模块的模块中提供它。

providers: [UserDetailsService],

关于angular - 共享服务中的 BehaviorSubject 不会将更新的值返回给组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47731545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com