问题标签 [behaviorsubject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 在服务角度订阅 Observable 不起作用
我正在使用 Rxjs 在角度组件中可观察到并学习东西。我有一个场景,我需要根据某些事件将数据从组件传递到服务。
Price.service.ts
以上服务用于组件中获取价格更新。
Price.component.ts
在组件中从 PriceService 获得新价格后,我有另一项服务,我正在做一些技术研究。我需要将数据传递给服务,为此我使用组件中的行为主题并且服务正在订阅它。(与组件订阅的通常方法不同。)
请让我知道它是否是使用 observable 的有效方式。
技术指标.service.ts
但是,订阅在 TechnicalIndicatorService 中只工作一次。对于之后的任何数据更新,它都不会触发订阅。请让我知道我在这里缺少什么。
angular - 将 Observable 中的参数提供给返回 Observable 的函数
我有一个具有以下签名的函数:
fetchUserCar(userId: string): Observable<Car>
但是要获取userId
参数,我必须调用一个无法编辑的函数,如下所示:
我该怎么做呢?
typescript - 两个布尔值的打字稿元组被推断为布尔类型的数组
我尝试制作两个布尔值的元组放在我的BehaviorSubject
但我得到一个编译错误说:
如何创建两个布尔值的元组,并正确初始化 BehaviorSubject?似乎认为[false, false]
是类型boolean[]
而不是元组,其中索引 0 和索引 1 必须是布尔值。
打字稿版本:2.3.3
来自 rxjs v 的 BehaviorSubject5.0.1
nested - 嵌套 BehaviorSubject 对象的 RxJs getValue
我正在使用 angular 4 和 RxJS 5,我有一个具有以下结构的对象(具有嵌套主题,在此示例中只有 2 个级别):
因此,如果我尝试输出 objs 的值,我会得到如下内容:
所以结果不包括 prop1 和 prop2 的值,但我仍然在第二级有 BehaviorSubject。
有没有办法像下面这样获取嵌套的 objs 值?:
我想知道是否有某种淘汰赛 ko.toJSON ( http://knockoutjs.com/documentation/plugins-mapping.html )
您是否认为嵌套 BehaviorSubjects 或人们每天都这样做通常是一种不好的做法:)?
angular - Angular 4 应用程序上的 BehaviorSubject 错误
我在 Angular 4 应用程序上有一个奇怪的问题。我的组件订阅了服务的 BehaviorSubject。在它的订阅(或地图,最后没有改变)我调用它第一次运行的 data.json() (来自 BehaviorSubject 的默认值,它是一个空数组)它失败,因为数组没有 .json功能。
在某些电脑中,此错误不会阻止其余应用程序按预期运行(实际上,甚至没有抛出错误)。在其他情况下,这个错误被抛出,其余的应用程序失败。
所有 pc 都具有完全相同的环境,运行相同的命令和 angular-cli 和本地 angular 依赖项。ng serve 或 ng build 都会发生这种情况。经过多次尝试定位此错误的根本原因,我们发现它与构建过程有关,因为“工作电脑”生成的文件可以在“不工作电脑”上成功运行,而相反(在“工作电脑”上传输的“非工作电脑”生成的文件)失败。
这个问题的根源可能是什么?是否应该抛出此错误的默认行为?无论如何,有没有人经历过类似的事情或对为什么会发生这种情况有什么建议?
angular - 角度 2 过滤器 BehaviorSubject
我尝试在 Angular 2 中过滤 BehaviorSubject。服务中的佣金对象将通过 http 请求获取数据。但是因为它是用“null”实例化的,所以过滤器代码行有一个错误。
错误:
无法读取 null 的属性“0”
在.filter((commission: Commission[], index) => commission[index]._id === this.commissionid)
这是代码:
佣金服务:
在组件中:
如果我更改 this.commissionid,这个过滤器是否可能会起作用?谢谢!
angular - 在发出两个 observable 的第一个值后,Zip 没有发出值
我正在尝试组合两个可观察对象,其中一个是路由参数,另一个是自定义参数。
我正在使用zip
,因为forkJoin
似乎不起作用。但是拉链表现得很奇怪,因为当我发出我的自定义拉链时,我没有得到那个值。我只得到BehaviorSubject
作为默认发射值提供给我的第一个空值。
我读了这个
“zip 运算符将订阅所有内部可观察对象,等待每个对象发出一个值。一旦发生这种情况,将发出具有相应索引的所有值。这将持续到至少一个内部可观察对象完成。”
这是否意味着在两个可观察对象都发出值之前它不会响应?因为路由参数 observable 只会发出一次,但dataEmitter
会继续发出值。在这种情况下,正确的运算符是什么?
这是我的一些代码:
在我的服务中发射器:
组件订阅,只null
从 中获取dataEmitter
,从不this.calculatedData
:
完成所有计算后调用此方法:
angular - 来自 switchMap 的 BehaviorSubject 然后 getValue 不是函数错误
这是我的课 ts 代码
这是来自服务的代码
我声明了类型,也声明了类型,但是当我写的时候
我收到此错误:
错误类型错误:this.product$.getValue 不是函数
谢谢
angular - 从 HTTP 调用 Angular2 获取先前值和当前值
我有一个场景,我需要比较从初始服务调用和新服务调用获得的相同 URL 的值。
服务等级:
现在,在 中Component 1
,我将此服务ngOnInit
称为如下:
//此时我有第一个值
现在,在 中
component 2
,调用相同的方法来检查在 中返回的值之间是否有任何差异Component 1
。
我怎样才能做到这一点?
我尝试使用 ReplaySubject 和 BehaviorSubject但并没有完全摆脱它。
angular - BehaviorSubject 观察 Angular 2 的多个值
我正在尝试使用 Angular2 中的行为主体和可观察对象在一个数组中传递 3 个参数。
这似乎不起作用,因为行为主体只支持一个参数。有什么建议么?