我一直在玩角度组件,我遇到了我有多个嵌套组件的情况,比方说像RootComponent-> GranParentComponent-> ParentComponent-> ChildComponent这样的4个级别。当我在ChildComponent上进行更改时,我需要使用来自ChildComponent的数据在RootComponent中调用一些服务。我已经通过组件创建了EventEmiters并且它可以工作,但问题是我是否可以在不通过组件通过RootComponent进行通信的情况下执行此操作。 提前谢谢。
答案 0 :(得分:2)
Angular不支持事件冒泡。如果事件冒泡对您的应用程序很重要,请不要使用EventEmitter;相反,使用本机DOM事件。在您的ChildComponent中执行以下操作:
constructor(element: ElementRef){}
...
this.element.nativeElement
.dispatchEvent(new CustomEvent('myCustomEvent', {foo:bar}));
在RootComponent中:
<div (myCustomEvent)= doSomething($event)>
<GrandParentComponent ></GrandParentComponent>
</div>