不从Subject.next()接收数据

时间:2018-10-08 09:20:47

标签: angular rxjs angular-formly subject

我有一个使用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中相同的设置该示例在我的应用程序中无法正常工作。

  • “ @ angular / core”:“ ^ 6.1.9”
  • “ rxjs”:“ ^ 6.3.3”
  • 没有rxjs-compat

2 个答案:

答案 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流显示已关闭。