12

is there a way to get the ViewContainerRef from a dynamic created component? My dynamic created component has an ngContent element inside, which i want to fill after the dynamic creation.

export class Example {

  @ViewChild('content', { read: ViewContainerRef }) //normal way
  content: ViewContainerRef;

...

  ngAfterViewInit(){
    let box1=this.content.createComponent(this.boxFactory);
    box1.instance.title="Dynamic (1)";
    // HERE: the box1 has a ng-content area which i want to fill.
  }

}

I think about some manual way to resolve the ViewChild instead of using the decorators. Some Ideas?

Thanks a lot.

0

3 Answers 3

2

I am not sure as well how to add viewchild dynamically. however, if dynamic ViewContainerRef is what you want, you can try using this solution:

in the html file create:

  <div id="test"></div>

in your component create:

 let nodeElement = document.getElementById("test");
      let compFactory = this.componentFactoryResolver.resolveComponentFactory(ChildComponent);
      let component = compFactory.create(this.viewContainerRef.injector, null, nodeElement);
Sign up to request clarification or add additional context in comments.

Comments

0

Dynamically Created Component

export class DashPanelComponent implements OnInit {

  @ViewChild('dashpanelpos', { read: ViewContainerRef }) dashPanelPosition?: ElementRef;

  constructor() { }
  ngOnInit() {  }

}

To access ViewContainerRef

this.dashPanel = this.renderComp({}, this.contentMappings["dash_panel"], container);
this.viewContainerRef = this.dashPanel.instance["dashPanelPosition"]);

dashPanelPosition is instance of DashPanelComponent.

Comments

-1

Your question can be answered if you read those two articles, it solved it for me:

https://blog.angularindepth.com/here-is-how-to-get-viewcontainerref-before-viewchild-query-is-evaluated-f649e51315fb

https://blog.angularindepth.com/here-is-what-you-need-to-know-about-dynamic-components-in-angular-ac1e96167f9e

The second article contains working angular examples on Github where you can check out working examples of dynamically created Components in 4 different ways.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.