Может кто-нибудь проиллюстрировать разницу между использованием элементов <ng-container> и <ng-template>?
Я не смог найти документацию для NgContainer и не совсем понял разницу между тегами шаблона.
Пример кода каждого очень помог бы.
Может кто-нибудь проиллюстрировать разницу между использованием элементов <ng-container> и <ng-template>?
Я не смог найти документацию для NgContainer и не совсем понял разницу между тегами шаблона.
Пример кода каждого очень помог бы.
Оба они в данный момент (2.x, 4.x) используются для группировки элементов вместе без необходимости вводить другой элемент, который будет отображаться на странице (например, div или span).
template, однако, требует неприятного синтаксиса. Например,
<li *ngFor="let item of items; let i = index; trackBy: trackByFn">...</li>
станет
<template ngFor let-item [ngForOf]="items" let-i="index" [ngForTrackBy]="trackByFn">
<li>...</li>
</template>
Вместо этого вы можете использовать ng-container, поскольку он соответствует синтаксису nice *, который вы ожидаете и, вероятно, уже знакомы.
<ng-container *ngFor="let item of items; let i = index; trackBy: trackByFn">
<li>...</li>
</ng-container>
Вы можете найти более подробную информацию, прочитав эту дискуссию о GitHub.
Обратите внимание, что в 4.x <template> устарела и изменяется на <ng-template>.
Использование
<ng-container>, если вам нужен вспомогательный элемент для вложенных структурных директив, таких как *ngIf или *ngFor или если вы хотите обернуть более одного элемента внутри такой структурной директивы;<ng-template>, если вам нужен фрагмент представления, который вы хотите штамповать в разных местах, используя ngForTemplate, ngTemplateOutlet, или createEmbeddedView(). ng-template используется для структурной директивы, такой как ng-if, ng-for и ng-switch. Если вы используете его без структурной директивы, ничего не произойдет, и он будет отображаться.
ng-container используется, когда у вас нет подходящей оболочки или родительского контейнера. В большинстве случаев мы используем div или span в качестве контейнера, но в тех случаях, когда мы хотим использовать несколько структурных директив. Но мы не можем использовать более одной структурной директивы для элемента, в этом случае ng-container может использоваться как контейнер
ng-template как следует из названия, обозначает шаблон. Само по себе это ничего не делает. Мы можем использовать ng-container для предоставления заполнителя для динамического отображения шаблона.
Другой вариант использования ng-template - это то, что мы можем использовать его для вложения нескольких структурных директив вместе. Вы можете найти отличные примеры в этом посте: angular ng-template/ng-container
Проще говоря, ng-container похож на более высокий компонент React, который помогает только в рендеринге его дочерних элементов.
ng-template в основном предназначен для внутренней реализации Angular, в которой все, что находится внутри ng-template, полностью игнорируется при рендеринге и в основном становится комментарием к исходному виду. Предполагается, что это будет использоваться с внутренними директивами ngIf, ngSwitch как ngIf, ngSwitch и т.д.