0
저는 Quora/facebook을 주석 기능과 같이 만들고 있습니다. 그러나 코멘트는 어떤 깊이로 갈 수 있습니다.원하는 #target에 동적으로 생성 된 구성 요소를 배치하는 방법
<ul>
<li *ngFor="let item of items let i = index">
<!-- some html code -->
<button(click)="addComment(item.id,i)">
<div>
<ng-template #target></ng-template>
</div>
</li>
</ul>
내가 만드는 오전 동적 부품이 내가 this 대답 대해 참조했습니다위한 : 다음 내 템플릿입니다.
export class myDynamicComponent {
@ ViewChild('target', { read: ViewContainerRef }) target: ViewContainerRef;
constructor(private replyService: ReplyService, private cfr:
ComponentFactoryResolver){}
public addComment(Id:any, index:any){
this.commentService.getContent(Id)
.subscribe(data => {
let compFactory =
this.cfr.resolveComponentFactory(myDynamicComponent);
let instance=this.target.createComponent(compFactory).instance;
instance.items=data ;
}
}
}
#target에 동적 구성 요소가 생성됩니다. 루프에서 생성되기 때문에 여러 개 있습니다. 이 문제는 새로 생성 된 구성 요소가 #target에 연결되고 현재 (클릭 된) #target에 연결되지 않는다는 점에서 문제가 있습니다.
어떻게 해결할 수 있습니까? 대신
실제로 'my-button-click-comment-something-component'는 'myDynamicComponent'입니다. n 개의 구성 요소를 만들어야합니다. 코멘트의 깊이에는 제한이 없습니다. 나는 당신의 제안을 따랐으나 새로 생성 된 동적 구성 요소를 현재 지시문/# target에 연결할 수는 없습니다. –
나는 그렇게 생각하지 않는다. 요점은'* ngFor'와'# target'이 같은 템플릿에 없다는 것입니다. –
귀하의 의견에 대해 자세히 말씀해 주시겠습니까? 구성 요소를 분리하더라도 {my-button-click-comment-something-component>에있는 미래 구성 요소를로드해야합니다. [sendToIt] = "whateverYouNeed"> my- –