根据分解标准,通常通过以下方式完成同级组件之间的通信:向父级发出事件,然后将事件转发给同级,或者创建一个包含可观察到的同级可以订阅的服务至。我认为这两种方法的实现和使用都比较麻烦,尤其是在例如子A仅在例如单击按钮时需要通知子B的情况下。
我偶然发现的另一种方法是在子A(ChildAComponent)中使静态可观察到
static onClickEmitter$ = new EventEmitter();
这样,我可以简单地将Child A导入到Child B中,然后订阅直接在ChildAComponent类上可用的Observable
ChildAComponent.onClickEmitter$.subscribe()
尽管从我到目前为止所看到的方法来看,这种方法可以很好地工作并且可以解决所有设置麻烦,但是我不确定这样做是否会带来主要和/或次要的警告/影响。这是一个可以更好地解释该方法的堆叠闪电战:
https://stackblitz.com/edit/angular-9hnlyx
这种方法合理吗?或者还有其他方法可以做到这一点?