Angular 8 - 在不访问 URL 参数的情况下跟踪显示的组件

Angular 8 - keeping track of displayed components without access to URL params

我有两个主要组成部分 - 列表和详细信息。在与前两个​​组件都没有 parent/child 关系的第三个组件中,我需要知道哪个组件当前处于 used/displayed 并基于此在其中执行一些操作。

现在,我订阅了两个组件(列表和详细信息)中每个组件的 URL 参数。在这两个订阅中,我设置了第三个组件订阅的行为主题(使用 next)。我在列表组件中的 URL 参数订阅中将行为主题设置为 'list',并在详细信息组件中将 URL 参数订阅中的行为主题设置为 'detail'。这就是第三个组件始终知道显示的是哪个组件的方式。

我敢肯定还有比打这种乒乓球更好的方法吗?

对我来说你的方法似乎是正确的。我做了一个 Stackblitz 示例,说明我可能会如何处理它:https://stackblitz.com/edit/angular-5mfjbz

在示例中,Parent = List 和 Child = Detail,第三个组件观察其他组件中发生的情况。

按照Angular documentation,实现非相关组件交互只有一种方式,共享服务。

从你的问题来看,我认为你不需要解释如何实现共享服务。这是实现没有父子关系的组件之间通信的唯一方法。

此外,共享服务解决方案易于实施,而不是像 ngrx

这样的商店

您始终可以使用商店 ngrx,并尝试在需要的地方设置和获取值。