Angular 如何转换两个不可观测数据流
我有两个可观察的Angular 如何转换两个不可观测数据流,angular,merge,rxjs,observable,Angular,Merge,Rxjs,Observable,我有两个可观察的可观察的 我想合并结果,例如false+false,false+true,等等 this.loaded$.pipe( merge(this.loading$) ).subscribe(console.log); //`false`,`false`; `true`,`false`; etc 然后我想根据条件将流转换为单个布尔可观测: 如果val1+val2==1-返回false;如果val1+val2!==1-返回真 因此,问题是如何转换合并的可观察对象 更新1: 绑定到使用
可观察的
我想合并结果,例如false+false
,false+true
,等等
this.loaded$.pipe(
merge(this.loading$)
).subscribe(console.log); //`false`,`false`; `true`,`false`; etc
然后我想根据条件将流转换为单个布尔可观测:
如果val1+val2==1
-返回false
;如果val1+val2!==1
-返回真
因此,问题是如何转换合并的
可观察对象
更新1:
绑定到使用CombineTest
但遇到问题:
combineLatest(
this.loaded$, this.loading$,
(val1, val2) => val1 + val2 === 1
);
[ts]运算符“+”不能应用于类型“{}”和“boolean”
更新2
.subscribe()
不存在于CombineTest()
[ts]类型“OperatorFunction”上不存在属性“subscribe”
更新3:
我在这里找到了我问题的答案您可以使用mapXXX操作符来实现它。
例如:
您可以使用mapXXX操作符来实现它。
例如:
[ts]类型“OperatorFunction”上不存在属性“subscribe”
当您试图将输出从布尔值转换为数字时,如果您想更改需要使用SwitchMap
的类型,就会出现此错误,但据我所知,一次只需要一个可观察的流
因此,建议使用下面给出的forkjoin
,这也将解决您的问题
作为其布尔结果,您应该应用逻辑运算符(&&或| |)来获取输出,而不是数字运算符
(val1, val2) => val1 && val2
正如您已经意识到的,您将收到两个值,即您有固定数量的请求,并且两个请求都需要完成才能获得结果,那么您应该使用
没有得到多少您想要实现的目标,但是如果您想要应用+
,那么您应该将布尔值转换为如下所示的数字
(val1, val2) => Number(val1) + Number(val2);
[ts]类型“OperatorFunction”上不存在属性“subscribe”
当您试图将输出从布尔值转换为数字时,如果您想更改需要使用SwitchMap
的类型,就会出现此错误,但据我所知,一次只需要一个可观察的流
因此,建议使用下面给出的forkjoin
,这也将解决您的问题
作为其布尔结果,您应该应用逻辑运算符(&&或| |)来获取输出,而不是数字运算符
(val1, val2) => val1 && val2
正如您已经意识到的,您将收到两个值,即您有固定数量的请求,并且两个请求都需要完成才能获得结果,那么您应该使用
没有得到多少您想要实现的目标,但是如果您想要应用+
,那么您应该将布尔值转换为如下所示的数字
(val1, val2) => Number(val1) + Number(val2);
这是行不通的,它总是只给你一个值,我需要同时得到两个值。这是行不通的,它总是只给你一个值,我需要同时得到两个值,这只是两个可观察的存储选择器(loaded$
和loading$
),不是请求,所以我真的不需要forkJoin
这里回答是的,我需要应用+
而不是&&
,就像&
的&
的|
我没有得到我需要的结果,只是无法使用forkJoin
获得示例[0]
和示例[1]
未定义
转换似乎正常,但我无法订阅结果,只是更新了问题。有没有想过为什么它会返回OperatorFunction
而不是Observable
?@Abrkad-更新了我的fork-join部分..就像我提到的,我在这里没有做任何http请求,我已经有两个Observable,它们只是我的存储的选择器
,实际上不需要forkJoin
部分。这只是两个可观察的存储选择器(loaded$
和loaded$
),不是请求,所以我真的不需要forkJoin
这里回答是的,我需要应用+
而不是&&
,就像&
的&
的|
我没有得到我需要的结果,只是无法使用forkJoin
获得示例[0]
和示例[1]
未定义
转换似乎正常,但我无法订阅结果,只是更新了问题。有没有想过为什么它会返回OperatorFunction
而不是Observable
?@Abrkad-更新了我的fork-join部分..就像我提到的,我在这里没有做任何http请求,我已经有两个Observable,它们只是我的存储的选择器
,实际上不需要forkJoin
部分。this.loaded$
和this.loaded$
的类型是什么?看起来其中一个给了你一个不是布尔值的对象。另外,如果它是布尔型
,最好使用&
和|
运算符this.loaded$
和this.loaded$
的类型是什么?看起来其中一个给了你一个不是布尔值的对象。此外,如果它的类型为boolean
,则最好使用&&
和|
运算符
(val1, val2) => Number(val1) + Number(val2);