Угловое 6 множественное содержание ng
Я пытаюсь создать пользовательский компонент с использованием нескольких ng-контента в угловом 6, но это не работает, и я понятия не имею, почему.
Это мой код компонента:
<div class="header-css-class">
<ng-content select="#header"></ng-content>
</div>
<div class="body-css-class">
<ng-content select="#body"></ng-content>
</div>
Я пытаюсь использовать этот компонент в другом месте и визуализировать два разных HTML-кода внутри тела и заголовка select ng-content, что-то вроде этого:
<div #header>This should be rendered in header selection of ng-content</div>
<div #body>This should be rendered in body selection of ng-content</div>
Но компонент визуализирует пустой. Вы, ребята, знаете, что я могу сделать неправильно, или как лучше всего сделать два разных раздела в одном компоненте?
Спасибо!
Ответы
Ответ 1
- Вы можете добавить фиктивные атрибуты
header
и body
вместо ссылок на шаблоны (#header, #body)
. - И transclude с помощью
ng-content
с select
атрибутом, как select="[header]"
.
app.comp.html
<app-child>
<div header >This should be rendered in header selection of ng-content</div>
<div body >This should be rendered in body selection of ng-content</div>
</app-child>
child.comp.html
<div class="header-css-class">
<ng-content select="[header]"></ng-content>
</div>
<div class="body-css-class">
<ng-content select="[body]"></ng-content>
</div>
DEMO
Ответ 2
В качестве альтернативы вы можете использовать:
app.comp.html
<app-child>
<div role="header">This should be rendered in header selection of ng-content</div>
<div role="body">This should be rendered in body selection of ng-content</div>
</app-child>
child.comp.html
<div class="header-css-class">
<ng-content select="div[role=header]"></ng-content>
</div>
<div class="body-css-class">
<ng-content select="div[role=body]"></ng-content>
</div>