【发布时间】:2018-10-06 09:37:02
【问题描述】:
在我的 app.component [AppModule] 中,在 ngOnInit() 中,我创建了一个订阅,订阅了我所在州名为 lastRouterUrl 的属性。它的工作方式是我有一个 reducer 来处理 ROUTER_NAVIGATION 操作并在创建新状态时更新此字段。
AppModule 中的任何导航都会导致调用reducer 并更新状态中的lastRouterUrl,然后调用上述订阅。
但是,我也有一些延迟加载的功能模块,当导航到这些功能模块以及用户在延迟模块内部的路由中导航时,会发生以下情况。 ROUTER_NAVIGATION 动作触发,reducer 运行并返回一个新状态,store 被更新(正如我在 DevTools 中看到的那样)但是在根模块中创建的订阅永远不会被调用。
另外,如果我将上述订阅移至惰性模块本身,一切正常!
似乎惰性/急切模块边界之间的任何调度和订阅者都是互斥的,即如果订阅者在另一个模块中,发生并导致状态更改的调度不会通知侦听该更改的订阅者。
如何解决这个问题?这实际上对我来说似乎不正确。如果我订阅了商店中某个属性的更改,则应该调用我的订阅,无论更改的源是在同一个模块中还是在不同的模块中,以及不同的模块是否是惰性的。
【问题讨论】:
标签: ngrx ngrx-store