Common menu usage case
<menu>
<menu-item1></menu-item1>
<menu-item2></menu-item2>
<menu-item3></menu-item3>
</menu>
menu template
<div *ngIf="open$ | async">
<ng-content></ng-content>
</div>
I was suprised to hear that all menu-item*
components (and all their children) will be instantiated despite their presence in DOM and menu
component *ngIf
state. Their OnInit
and AfterViewInit
hooks will be called even if menu has never been opened and OnDestroy
will never fires despite real adding-removing from DOM. Here is a closed issue about this https://github.com/angular/angular/issues/13921 (there is a plnkr with example) and an issue to angular documentation https://github.com/angular/angular.io/issues/3099.
But this issue is still here - how could i do so that menu items will be instantiated only when menu is opened and properly destroyed if closed? All hooks should fire only related to real DOM state.
<template>
/TemplateRef
/ngTemplateOutlet
and other things that looks strange and unobvious. Can u recommend any text/video content on this theme? – Brachypterous