Попробуйте это вместо этого.

аюсь создать компонент, который принимает несколько шаблонов в качестве входных данных. Вот пример, который я имею:

@Component({
    selector: 'data-list',
    styles: [
        require('./data-list.component.scss')
    ],
    template: `
        <ng-template
            *ngFor="let item of itemsData"
            ngFor let-item [ngForOf]="[item]" [ngForTemplate]="itemTemplate"
        ></ng-template>
    `
})

export class DataListComponent {
    @Input() itemsData: any[];
    @ContentChild(TemplateRef) itemTemplate: TemplateRef<ElementRef>;
}

Как видите, это довольно простой компонент, который я пробую. Этот компонент просто принимает данные отображаемых элементов, а также шаблон элемента. Этот компонент можно использовать так:

<data-list [itemsData]="data">
    <ng-template let-item>
        <h1>{{ item.header }}</h1>
        <div>{{ item.content }}</div>
    </ng-template>
</data-list>

Как показано выше, я передаю шаблон с помощьюng-content который затем читаетсяDataListComponent с@ContentChild(TemplateRef) itemTemplate: TemplateRef<ElementRef>;.

Мой вопрос заключается в том, можно ли передать несколько шаблонов компоненту.

В качестве примера можно передать шаблон для элементов, но в случае, если это первый элемент, необходим другой шаблон. Это будет означать, что проверка первого пункта будет произведена вDataListComponent но затем используйте шаблон, указанный компонентом, использующим его.

Простой пример:

Я могу сделать что-то вроде этого, чтобы удовлетворить это:

@Component({
    selector: 'data-list',
    styles: [
        require('./data-list.component.scss')
    ],
    template: `
        <span *ngFor="let item of itemsData; let i = index" >
            <ng-template *ngIf="i > 0; else nextTmpl"
                ngFor let-item [ngForOf]="[item]" [ngForTemplate]="itemTemplate"
            ></ng-template>
        </span>
        <ng-template #nextTmpl>
            Next
        </ng-template>
    `
})

Как бы то ни было, «Следующий шаблон» не определяется компонентом, использующимDataListComponent и поэтому всегда будет один и тот же шаблон.

Ответы на вопрос(2)

Ваш ответ на вопрос