EventEmitters를 사용하여 중첩 된 구성 요소 체인을 통해 데이터/이벤트를 전달하려고합니다. 그러나 나는 하나의 문제를 해결하는 방법이 이것을 막을 수 있다고 생각한다.포함 된보기의 이벤트를 각도로 구독 할 수 있습니까?
구성 요소 중 하나에 포함 된 뷰를 생성하므로 테이블 구조가 엉망이되지 않습니다. 해당 구성 요소에 대한 관련 코드는 다음과 같습니다.
@ContentChild(DataTableAddRecordComponent) adder: DataTableAddRecordComponent;
@ViewChild('dtAdder', { read: ViewContainerRef }) adderContainer: ViewContainerRef;
ngAfterContentInit(): void {
if (this.adder && this.adderContainer) {
this.adderContainer.createEmbeddedView(this.adder.templateRef);
}
}
여기에는 동일한 구성 요소에 대한 일부 HTML이 나와 있습니다. 이벤트를 구독하려고하는 것이 실제 구성 요소가 아닌 컨테이너에 어떻게 적용되는지 주목하십시오. 다시 이것은 <data-table-adder>
태그가 내 테이블을 망쳐 놓지 않도록하기 위해서입니다. 그러나 템플릿에없는 경우 해당 구성 요소의 이벤트를 어떻게 잡을 수 있습니까 (아니면 내가 누락 된 다른 것이 있습니까?).
무엇이'this.adder.templateRef'입니까? –
위의 코드를 자세히 살펴보면 가산기가 contentchild로 선언 된 구성 요소임을 알 수 있습니다. TemplateRef는 이러한 내장 된 뷰를 생성하기 위해 구성 요소의 속성 (뷰 템플릿에 대한 참조)입니다. https://angular.io/api/core/TemplateRef – 333Matt