将行为主题类型的值传递给Angular中的新post请求



我试图在Angular Post Request中传递行为主题类型的值,但得到这个错误:

{_isScalar: false, observers: [], closed: false, isStopped: false, hasError: false, thrownError: null,…}
get currentID()
{
return this.UserService.ID;
}
let data = {  id: this.currentID() };
this.Service.getData(data).subscribe(data => {
服务:

ID=new BehaviorSubject<any>('');

值在这个变量中可用:

BehaviorSubject {_isScalar: false, observers: Array(1), closed: false, isStopped: false, hasError: false, …}
closed: false
hasError: false
isStopped: false
observers: [Subscriber]
thrownError: null
_isScalar: false
_value: ....56568568
value: (...)

任何建议都是非常感谢的

BehaviorSubject仍然是一个可观察对象,因为我没有看到你的服务类对data变量做了什么,我将假设你不希望你的id在那一点上仍然是一个可观察对象。为了获得BehaviorSubject发出的最后一个值,您需要像这样调用getValue方法:

get currentID()
{
return this.UserService.ID.getValue();
}
let data = {  id: this.currentID() };
this.Service.getData(data).subscribe(data => {
你可以采用的另一种方法是将你的可观察对象组合成:
this.UserService.ID.pipe(
map(id => ({id})),
switchMap(data => this.Service.getData(data))
).subscribe(result => {
...
});

第二种方法不需要解包BehaviorSubject,而是用它来组成一个新的可观察流,它需要BehaviorSubject和服务调用。

最新更新