2017-09-04 3 views
0

저는 각 구성 요소를 가지고 놀았으며 중첩 된 구성 요소가 여러 개있는 상황에서 RootComponent-> GranParentComponent-> ParentComponent-> ChildComponent와 같은 4 단계를 가정 해 보겠습니다. ChildComponent를 변경했을 때, ChildComponent로부터 오는 데이터로 RootComponent에서 일부 서비스를 호출해야합니다. 구성 요소를 통해 EventEmiters를 만들었지 만 작동하지만 질문은 RootComponent와 통신하기 위해 구성 요소를 완전히 통과하지 않고도이 작업을 수행 할 수 있습니까? 미리 감사드립니다. 중첩 된 구성 요소를 통한 각도 감지 변경

답변

1

각도는 이벤트 버블 링을 지원하지 않습니다. 응용 프로그램에서 이벤트 버블 링이 중요한 경우 EventEmitter를 사용하지 마십시오. 대신 기본 DOM 이벤트를 사용하십시오. 당신의 RootComponent에서

constructor(element: ElementRef){} 
... 
this.element.nativeElement 
.dispatchEvent(new CustomEvent('myCustomEvent', {foo:bar})); 

: 당신의 ChildComponent에서 같은 것을 할

<div (myCustomEvent)= doSomething($event)> 
    <GrandParentComponent ></GrandParentComponent> 
</div> 
+0

이 ChildComponent에서 이벤트를 발사하고 RootComponent에 대한 몇 가지 기능을 실행하지만, 어떻게 데이터와 개체를 전달하는 OK입니다. https://stackblitz.com/edit/angular-heachx?file=app%2Fparent.component.ts –

+1

에 설명하기위한 예제 코드를 만들었습니다. CustomEvent의 detail 속성을 사용해야합니다. 샘플 업데이트 https://stackblitz.com/edit/angular-56wcbh?file=app%2Fapp.component.ts 브라우저 콘솔을 열어 app 구성 요소의 결과를 확인하십시오. –

+0

대답하려면 작동합니다 (+1). –

관련 문제