我有两个主要组成部分-列表和详细信息。在第三个组件中,它与前两个组件都不具有父/子关系,我需要知道当前正在使用/显示哪个组件,并在此基础上执行一些操作。
目前,我已在两个组件(列表和详细信息)的每个组件中订阅了URL参数。在这两个订阅中,我设置了一个行为主题(使用下一个),订阅了第三部分。我在列表组件内的URL参数订阅中将行为主题设置为“列表”,在详细组件中对URL参数的订阅中将行为主题设置为“详细信息”。这就是第三个组件始终知道正在显示哪个组件的方式。
我确定还有比玩这种乒乓球更好的方法?
对我来说,您的方法似乎是正确的。我做了一个关于如何处理它的Stackblitz示例:https://stackblitz.com/edit/angular-5mfjbz
在示例中,Parent = List和Child = Detail,第三个组件观察其他组件中发生的事情。
根据Angular documentation,只有一种方法可以实现不相关的组件交互,共享服务。
从您的问题出发,我认为您不需要解释如何实现共享服务。这是在没有父子关系的组件之间实现通信的唯一方法。
此外,共享服务解决方案易于实现,而不是使用像ngrx
这样的存储库>
您可以随时使用存储ngrx,并尝试在需要的地方设置和获取值。