Angular
June 7
ANGULAR: КАК ПРОВЕРИТЬ ПЕРЕДАННЫЕ ДАННЫЕ В NG-CONTENT
Иногда возникает задача с проверкой пришли ли данные в ng-content компонента или нет.
Например у нас есть такой шаблон компонента:
<div class="block"> <div *ngIf="title" class="block__title" innterHtml="title"></div> <div class="block__body"> <ng-content></ng-content> </div> </div>
Проблема в то сто если мы ничего не передали в ng-content то обёртка .block__body
все равно отобразится, чего не хотелось бы.
Решение есть. Не очень красивое, но все же...
При вызове компонента оборачиванем данные в ng-template
<ng-template #сontent> <p>Body content...</p> </ng-template>
В компоненте инициализируем переменную:
@ContentChild('content', { static: false }) content: TemplateRef<unknown>;
У после этого в шаблоне уже можем проверить - пришли данные или нет.
<div class="block"> <div *ngIf="title" class="block__title" innterHtml="title"></div> <div *ngIf="content" class="block__body"> <ng-container *ngTemplateOutlet="mainContent"></ng-container> </div> </div>