我有一个使用ngx-formly
(动态形式)的角度应用程序,其中我有一个subscribe()
的形式类型(选择)。在组件中,为表单类型定义了Observable
形式并动态创建了形式。
在组件中,我有一个Subject
和一个按钮,它们产生一个next()
,形式类型不接收数据(也没有接收完整的数据)。
组件本身中的subscribe()
起作用。
从Subject
切换到BehaviorSubject<number>()
时,我收到了一次正式类型的数据,但没有收到next()
上的更多数据。
该代码应在步进器/向导中使用,更改为下一步,此步骤中的所有select都应重新加载其选项。
可以在此处找到100%正常工作的堆栈闪电示例:https://stackblitz.com/edit/angular-9ts63k?file=src%2Fapp%2Fapp.component.ts
我对rxjs有很好的理解(使用rxjs和ngx-store已有两年;到目前为止,我是专家),但是我完全陷入了困境,因此任何想法都说明为什么rxjs具有与stackblitz中相同的设置该示例在我的应用程序中无法正常工作。
答案 0 :(得分:0)
似乎您要使用的体系结构与ngrx/effects
(Find the Github Here)的体系结构非常相似。因此,现在您的代码存在的问题是,您正在订阅主题stepSelected$
,而不是只是对其进行管道传输并在其上应用switchMap
运算符。您必须先订阅可观察值,然后才能接收它。
this.stepSelected$.subscribe(value => {
this.getSports(value);
});
您必须执行类似的操作才能从主题中获取价值,然后调用API。
答案 1 :(得分:0)
我找到了罪魁祸首。该应用程序利用动态表单,并在服务中使用了cloneDeep来复制正式的字段定义(被忽略)。到目前为止,该应用程序仅使用一个Observable的返回值,而不使用有效的Subject。现在,使用附加的Subject不再起作用,检查Observable流显示已关闭。