У меня есть ListComponent
, который в основном петли в массиве объектов с ngFor
+ некоторыми функциями.
Я хотел бы иметь возможность передавать разные "элементы" в качестве контента ListComponent
следующим образом:
<list-component>
<item-component [SomeInput]="someInput">
<some-content></some-content>
</item-component>
</list-component>
и в другом месте:
<list-component>
<different-item-component [SomeInput]="someInput">
<some-content></some-content>
</different-item-component>
</list-component>
а затем в моем ListComponent
<ul>
<li *ngFor="let item of items">
<!-- ng-content can be different item components -->
<ng-content [Item]="item" ></ng-content>
</li>
</ul>
Я знаю, что ng-content
является статическим, и элемент не может быть передан как вход. (Это просто для иллюстрации желаемого поведения...)
Я пытался достичь этого, используя template
и TemplateRef
, как в этом :
но он работает только в том случае, если я помещаю тег template
непосредственно внутри <list-component>
не работает, если поместить template
внутри шаблона item-component
и использовать его как указано выше.
Как я могу заставить его работать или есть другой способ достичь этого?