Ngrx订阅不是跨越惰性边界调用的

问题描述 投票:0回答:1

在我的app.component [AppModule]中,在ngOnInit()中,我创建了一个名为lastRouterUrl的属性的订阅。它的工作方式是我有一个reducer来处理ROUTER_NAVIGATION操作并在创建新状态时更新该字段。

AppModule中的任何导航都会导致调用reducer并更新状态中的lastRouterUrl,然后调用上述订阅。

但是,我还有一些延迟加载的功能模块,当导航到这些模块时,当用户在惰性模块内部的路由中导航时,会发生以下情况。触发ROUTER_NAVIGATION操作,reducer运行并返回一个新状态,更新存储(我在DevTools中可以看到)但是从不调用在根模块中创建的订阅。

此外,如果我将上述订阅移动到懒惰模块本身一切正常!

似乎懒惰/急切模块边界之间的任何调度和订阅者是互斥的,即,如果该订户在另一模块中,则发生并且导致状态改变的调度不会通知订阅者监听该改变。

怎么可能解决这个问题?这实际上对我来说似乎不对。如果我订阅商店中属性的更改,则应调用我的订阅,无论更改源是在同一模块还是不同模块中,以及该不同模块是否是懒惰的。

ngrx ngrx-store
1个回答
0
投票

为了记录,想出来了..我的功能模块中有一个重复的导入,正在创建一个新的商店。在商店实例下拉列表中的开发工具中发现了这一点,并注意到有2个实例。因此,原始订阅针对第一个商店,ROUTER_NAVIGATION操作在同一个reducer中,但更新了第二个商店。

© www.soinside.com 2019 - 2024. All rights reserved.