При создании компонентов динамически через ComponentFactory возвращаемый компонент ComponentRef предоставляет метод destroy, который отлично работает для того, что я хотел бы выполнить, Имея это в виду, похоже, что все, что мне нужно сделать, это получить компонент ComponentRef для статически созданного компонента, а затем использовать его функцию destroy (в которой говорится этот ответ) но когда я пытаюсь это сделать, я получаю сообщение о том, что "destroy не является функцией", хотя я возвращаю объект обратно.
Вот синтаксис, который я использую для ViewChild:
@ViewChild(MyComponent) myComponentRef: ComponentRef<MyComponent>;
И мой вызов "destroy" :
private destroy() {
this.myComponentRef.destroy();
}
Что вызвано здесь:
<button (click)="destroy()">Destroy</button>
Вызов этого метода "destroy" работает для компонентов, которые я создаю динамически, но не статически.
Изменить: Итак, похоже, что это частично удаляет компонент, но не из DOM, что не является тем же самым поведением, которое возникает при вызове "destroy" на динамически созданный компонент. Кроме того, функция click click по-прежнему срабатывает, когда я нажимаю на компонент, который я пытался уничтожить.
Изменить 2: я обновил синтаксис ViewChild, чтобы явно прочитать для ComponentRef, и я получаю "undefined" назад:
@ViewChild(MyComponent, {read: ComponentRef}) myComponentRef: ComponentRef<MyComponent>;
Если это возвращает "undefined", то я предполагаю, что это может быть невозможно.