角度:如何将组件动态添加到父仪表板组件?



我有两个组件。一个是卡片仪表板(使用ng generate @angular/material:material-dashboard --name=my-dashboard创建(,其中卡片的创建方式如下:

<div class="grid-container">
<h1 class="mat-h1">Dashboard</h1>
<mat-grid-list cols="2" rowHeight="350px">
<mat-grid-tile *ngFor="let card of cards" [colspan]="card.cols" [rowspan]="card.rows">
<mat-card class="dashboard-card">
<mat-card-header>
<mat-card-title> {{card.title}}
<button mat-icon-button class="more-button" [matMenuTriggerFor]="menu" aria-label="Toggle menu">
<mat-icon>more_vert</mat-icon>
</button>
<mat-menu #menu="matMenu" xPosition="before">
<button mat-menu-item>Expand</button>
<button mat-menu-item>Remove</button>
</mat-menu>
</mat-card-title>
</mat-card-header>
<mat-card-content class="dashboard-card-content">
<div>{{ card.content }}</div>
</mat-card-content>
</mat-card>
</mat-grid-tile>
</mat-grid-list>
</div>

并像这样填充:

export class DashComponent {
cards = [
{ title: 'Character', cols: 2, rows: 1, content: '<app-character-sheet></app-character-sheet>' },
{ title: 'Card 2', cols: 1, rows: 1 },
{ title: 'Card 3', cols: 1, rows: 2 },
{ title: 'Card 4', cols: 1, rows: 1 }
];
}

我想用不同的组件填充卡片。但是当我像上面看到的那样尝试它时(使用内容变量(,HTML 没有解析选择器。这张卡只是帽子字面内容:。

如何用组件动态填充我的卡片?

干杯

如果您确实需要动态插入组件,请阅读本文。

另一种解决方案是使用结构指令,如ngIf或ngSwitchCase,用于内容选项集有限的情况:

<mat-card-content class="dashboard-card-content">
<div *ngIf="card.content"><app-character-sheet></app-character-sheet></div>
</mat-card-content>

您可以在不进行后处理的情况下不安全地插入 HTML(但不建议这样做(:

<div [innerHTML]="card.content"></div>

最新更新