2017-10-24 3 views
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에 연결되지 않는다는 점에서 문제가 있습니다.

어떻게 해결할 수 있습니까? 대신

답변

0

:

<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> 

은 별도의 압축을 풉니 구성 요소와 같은 : 당신의 my-button-click-comment-something-component 할 동적 요소 생성 및 취급 다음

<li *ngFor="let item of items let i = index"> 

    <my-button-click-comment-something-component [sendToIt]="whateverYouNeed"> 
    </my-button-click-comment-something-component> 

</li> 

합니다.

+0

실제로 'my-button-click-comment-something-component'는 'myDynamicComponent'입니다. n 개의 구성 요소를 만들어야합니다. 코멘트의 깊이에는 제한이 없습니다. 나는 당신의 제안을 따랐으나 새로 생성 된 동적 구성 요소를 현재 지시문/# target에 연결할 수는 없습니다. –

+0

나는 그렇게 생각하지 않는다. 요점은'* ngFor'와'# target'이 같은 템플릿에 없다는 것입니다. –

+0

귀하의 의견에 대해 자세히 말씀해 주시겠습니까? 구성 요소를 분리하더라도 {my-button-click-comment-something-component>에있는 미래 구성 요소를로드해야합니다. [sendToIt] = "whateverYouNeed">

관련 문제