NgRX 8效果-createEffect()不起作用-类型'Observable <未知>'不可分配给类型'Observable <Action>

时间:2019-10-22 19:21:49

标签: angular ionic4 ngrx ngrx-effects

我有一个离子4应用程序,正在使用NgRX8。

以下代码编译:

   connect2$ = createEffect(() =>
        this.actions$.pipe(
            // restart counter on every click
            switchMap(() => interval(1000))
          )
    );

但是当我如下使用createEffect()时:

bin

我收到以下错误:

  

类型'Observable'不可分配给类型   '可观察的| ((... args:any [])=>可观察)'

我在上一篇文章中看到了删除createEffect()来解决语法问题的建议。但是当我这样做时,较旧的语法不会出现任何问题。

NgRX 8 effects - Type 'Observable<unknown>' is not assignable to type 'Observable<Action>'

关于我可能会看到的任何建议吗?

谢谢

2 个答案:

答案 0 :(得分:2)

较旧的语法没有类型检查-新语法没有类型检查,因此会出现此错误。 现在,您在编译时遇到错误,而不是在运行时遇到意外错误。

您会收到此错误,因为效果应始终返回Action,除非用{ dispatch: false }指定

答案 1 :(得分:0)

TL; DR :您是否正在寻找ActionsSubject


您的效果似乎没有任何作用(即使它具有{ dispatch: false })。

我认为根据下图进行思考很有帮助。

在我看来,效果应该是

  1. 纯净的“行动”→“行动”效果
  2. 类似导航的副作用

这迫使您以以下方式思考:

  • 如果我要创造一种效果,可能会有什么结果(通常是成功/失败)?
      

    这导致为每个对象创建适当的操作。

  • 此举会导致状态改变吗?

如果您要进行状态更改,而不是使用适当的操作(例如RESTART_TIMER,它在reducer中使用上次重置的时间来更新状态),并使用选择器来创建计数器,但是最好在组件中使用与this question相似的ActionsSubject订阅

enter image description here