假设我有一个组件 ListOptionsMenu,该组件通过其输入接收 1 个菜单的选项列表。
现在假设在一个视图中有 4 个菜单,那么我使用ListOptionsMenu模板,但在创建另一个ListFatherOptionsMenu组件来控制数据的逻辑之前。
在ListFatherOptionsMenu中,我在它的构造函数中有一个menuService,在它的 ngOnInit 中的 this ,根据类型this.menuService.getOptions(type) 调用负责带菜单选项数据的服务的方法; 然后父组件将它从服务中获取的选项传递给子组件,这没有问题,4个菜单中的每一个都有其对应的选项。
现在假设我想动态更改菜单选项,我单击一个允许我登录的菜单选项,登录面板打开并且 4 个菜单仍然在同一个视图中,只需更改正文,我登录就来了问题,一旦我成功登录,我想通过对 api 的新调用来更改 2 个菜单的选项列表,1 将菜单从登录注册更新为注销(我知道很简单),另一个更新用户进入时的主菜单。
然后在ListFatherOptionsMenu中可以使用服务之间的通信将它与一些 observable 链接起来,或者使用 redux 与ngrx / store和ngrx / effects,这里的问题是这个组件不知道将从 observable 收集的数据发送给谁,并且如果发送,则在 4 个子组件中进行复制。
然后我决定删除这个父组件并控制来自相同子组件的数据逻辑。
但是这里的问题是一样的,如果我将 observable 连接到服务(登录)以更改数据(通过服务调用 api),或者使用 redux(存储),这在构造函数中,所有ListOptionsMenu都相同,然后在任何更改时都会影响 4 个组件。
我想也许在构造函数中添加一个开关,并根据菜单的类型加载适当的 store/observable,可以解决这个问题,所以当用户登录时,menuA、storeA 被加载,B store B 和 Other 没有更改没有加载任何商店,但是我认为这不是一个很干净的选择。
我需要帮助来了解如何在这种情况下控制信息流,因为它不仅扩展到许多选项,而且扩展到任何类型的组件,这些组件需要作为其他服务的模板。
任何形式的帮助,在此先感谢。