How to ngFor on multiple types of components using ngComponentOutlet?

微笑、不失礼 提交于 2019-11-27 16:32:28

问题


I've got a whatsapp-like chat case of many types of messages that are needed to be displayed differently.

Each has its' own component such as TextMessageComponent, FileMessageComponent, etc..

I'd like to be able to ngFor once on my array of messages without having to ngIf over the types.

I've heard ngComponentOutlet might be the solution but found it hard to implement..

Any suggestions, a mini demo or anything you find useful would be highly appreciated!


回答1:


Having a property on the object should help you

<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>

Array object should be as

items:Array<any> = [
{
  name: 'slider'
  component: sliderComponent

},
{
  name: 'user'
  component: usersComponent

},
{
  name: 'slider'
  component: sliderComponent

},
{
  name: 'alert danger'
  component: AlertDangerComponent
}

]

Ensure that all the components are loaded by using them in the AppModule

entryComponents: [AlertDangerComponent, AlertSuccessComponent, usersComponent, sliderComponent ]

LIVE DEMO



来源:https://stackoverflow.com/questions/45138665/how-to-ngfor-on-multiple-types-of-components-using-ngcomponentoutlet

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!