Я пытаюсь создать компонент Dynami c в версии Angular 10 У меня есть дочерний компонент с именем Category, и я хочу создать его, используя основной компонент. Дочерний компонент
import { Component,Input} from '@angular/core';
@Component({
selector: 'app-category',
templateUrl: './category.component.html',
styleUrls: ['./category.component.css'],
})
export class CategoryComponent {
@Input() parentCategory: string;
constructor() {}
}
Основной компонент
import {Component, ViewChild,ViewContainerRef,ComponentFactoryResolver, OnInit} from '@angular/core';
import { CategoryComponent } from '../category/category.component';
@Component({
selector: 'app-ads-post',
templateUrl: './ads-post.component.html',
styleUrls: ['./ads-post.component.css'],
})
export class AdsPostComponent implements OnInit {
componentRef: any;
@ViewChild('categorycontainer', { read: ViewContainerRef })
container: ViewContainerRef;
constructor(
private componentFactoryResolver: ComponentFactoryResolver
) {}
createComponent(parent: string) {
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(
CategoryComponent
);
// add the component to the view
const componentRef = this.container.createComponent(componentFactory);
this.componentRef.instance.parentCategory = parent;
}
destroyComponent() {
this.componentRef.destroy();
}
ngOnInit(): void {
this.createComponent('');
}
}
HTML side
<div #categorycontainer></div>
App.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { AdsPostComponent } from './components/ads/ads-post.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { CategoryComponent } from './components/category/category.component';
@NgModule({
declarations: [AppComponent, AdsPostComponent, CategoryComponent],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule,
BrowserAnimationsModule,
NgbModule,
],
bootstrap: [AppComponent],
entryComponents: [CategoryComponent],
})
export class AppModule {}
Когда я пытаюсь создать компонент в ngOninit, я получаю эту ошибку ERROR TypeError: не удается прочитать свойство createComponent из undefined
Как я могу создать компонент динамически или я что-то пропустил? Спасибо