#angular #dom #components #destroy
#angular #dom #Компоненты #уничтожить
Вопрос:
Уничтожает ли angular компонент, если мы добавляем и удаляем его из DOM вручную?
constructor(
private componentFactoryResolver: ComponentFactoryResolver,
private appRef: ApplicationRef,
private injector: Injector
) {
// Create component
const myComponentRef = this.componentFactoryResolver
.resolveComponentFactory(MyComponent)
.create(this.injector);
this.appRef.attachView(myComponentRef.hostView);
// Subscribe on 'someChange' event of the component
myComponent.instance.someChange.subscribe(() => {
// Should be unsubscribed if the component is destroyed
});
// Non Angular DOM manipulation
const myComponentElement = componentRef.hostView.rootNodes[0];
const containerElement = document.getElementById('container');
containerElement.appendChild(myComponentElement);
containerElement.innerHtml = '';
}
Еще немного деталей, еще немного деталей, еще немного деталей… StackOverflow немного туповат, чтобы понять, что код содержит все возможные детали
Комментарии:
1. Чтобы проверить это, не могли бы вы попробовать добавить таймер, в котором есть консоль, в компонент, который вы добавляете и удаляете. Вы можете проверить, уничтожен ли он, посмотрев на консоль
2. @SebaCherian, я проверил это в консоли. Angular не уничтожает динамические компоненты (или я делаю что-то неправильно