Похоже, вы пытаетесь использовать что-то вроде <ng-content>
и проекцию контента. Вот полезная статья , объясняющая это немного.
Вот Stackblitz , демонстрирующий очень маленький пример ng-content
.
Для быстрого ознакомления, в вашем "родительском" компоненте (в вашем случае на панели навигации) вы сообщите angular, куда вы хотите поместить вложенный контент, в go:
nav-bar.component. html
<div class="wrapper" fixed>
<!-- your nav-bar code -->
<!-- nested content will go here -->
<ng-content></ng-content>
</div>
Затем, когда вы используете вашу навигационную панель, вы можете "проецировать" контент в этот тег ng-content
:
app.component. html (или любой другой компонент)
<nav-bar>
Here is some content to project into the nav-bar's ng-content
</nav-bar>
Полный код см. В стекаблице. Существует также способ иметь несколько тегов ng-content
с помощью селекторов. В статье объясняются те, если вам нужно больше проектируемых слотов.
Похоже, у вас есть какая-то сложная логика c в вашей навигационной панели, поэтому я не пытался воспроизвести ваш код. Небольшая демонстрация должна помочь вам начать в правильном направлении.