Как использовать ngFor для компонентов нескольких типов, используя ngComponentOutlet?
У меня есть чат, похожий на WhatsApp, со многими типами сообщений, которые должны отображаться по-разному.
У каждого есть свой собственный компонент, такой как TextMessageComponent
, FileMessageComponent
, так далее..
Я хотел бы иметь возможность ngFor
один раз в моем массиве сообщений без необходимости ngIf
над типами.
я слышал ngComponentOutlet
может быть решением, но было трудно реализовать..
Буду очень признателен за любые предложения, мини-демо или что-нибудь полезное!
1 ответ
Решение
Наличие собственности на объекте должно помочь вам
<div *ngFor="let item of items" style="border: solid 1px; padding: 20px;margin: 20px;">
<span style="color:red"> {{item.name}} </span>
<ng-container *ngComponentOutlet="item.component"><ng-container>
<br>
</div>
Объект массива должен быть как
items:Array<any> = [
{
name: 'slider'
component: sliderComponent
},
{
name: 'user'
component: usersComponent
},
{
name: 'slider'
component: sliderComponent
},
{
name: 'alert danger'
component: AlertDangerComponent
}
]
Убедитесь, что все компоненты загружены, используя их в AppModule
entryComponents: [AlertDangerComponent, AlertSuccessComponent, usersComponent, sliderComponent ]