Angular – Как уничтожить динамически компонент нажатием кнопки

Вопрос: Я использую это для динамического создания компонента в угловых: addComponent() { const componentFactory = this.componentFactoryResolver.resolveComponentFactory(ChildComponent); const viewContainerRef = this.injectComp.viewContainerRef; const compRef = viewContainerRef.createComponent(componentFactory); compRef.instance.someProperty = "some data"; } Таким образом, каждый раз, когда метод выполняется, создается новый экземпляр компонента. Там все отлично, но мой вопрос: Как уничтожить эти созданные компоненты из самого ChildComponent с

Вопрос:

Я использую это для динамического создания компонента в угловых:

addComponent() { const componentFactory = this.componentFactoryResolver.resolveComponentFactory(ChildComponent); const viewContainerRef = this.injectComp.viewContainerRef; const compRef = viewContainerRef.createComponent(componentFactory); compRef.instance.someProperty = «some data»; }

Таким образом, каждый раз, когда метод выполняется, создается новый экземпляр компонента. Там все отлично, но мой вопрос:

Как уничтожить эти созданные компоненты из самого ChildComponent с помощью события нажатия кнопки?

Лучший ответ:

1) Вы можете отслеживать компонент или весь компонент в переменной или в объекте и уничтожать их: –

2) Или уничтожить предыдущий компонент при загрузке нового в DOM, сохранив последнюю ссылку и .destroy() их перед вставкой нового.

.html <ng-container #dynamicComponentContainer id=»dynamicComponentContainer»></ng-container> .ts let componentRef = this.componentFactoryResolver.resolveComponentFactory(cmptName).create(this.injector); // check for duplicates and update with new one // this.checkForDuplicateCmp(componentRef); componentRef.instance[‘inputdata’] = initCmpInputdata; let indexView = this.dynamicComponentContainer.length; this.dynamicComponentContainer.insert(componentRef.hostView, indexView); // keep refrence of lastComponent added to DOM this.lastComponent = componentRef; public remove component(){ // destroy components as on click this.lastComponent.destroy(); //or for (var j = 1; j < this.dynamicComponentContainer.length; j++) { this.dynamicComponentContainer.remove(j); //or pass j } }

Оцените статью
Добавить комментарий