使用 Angular 添加带有组件内容的点击标签

Add Tab on click with component content with Angular

我想在用户单击 link 时动态创建一个选项卡。选项卡应该被选中,内容是一个组件。如果单击另一个 link,则应添加具有不同组件的选项卡。

<button mat-raised-button  (click)="addTab('Content 1', '\<app-content1>\</app-content1>')">
  Add content1
</button>

<mat-tab-group #tabgroup>
  <mat-tab #blankTab>
  </mat-tab>

  <mat-tab *ngFor="let tab of tabs; let index = index" [label]="tab.caption">
    {{ tab.content }}
  </mat-tab>
</mat-tab-group>


export class TesttabsComponent implements OnInit {

  tabs = [{ caption: 'First', content: '<p>first</p>' }, { caption: 'Second', content: '<p>second</p>' }];


  constructor() { }


  ngOnInit(): void {
  }

  addTab(caption: string, content: string) {
    this.tabs.push({ caption: caption, content: content });
  }
}

问题是点击它时会输出而不是评估组件

我的问题的解决方案是使用 *ngComponentOutlet

<mat-tab-group #tabgroup>
  <mat-tab *ngFor="let tab of tabs; let index = index" [label]="tab.caption">    
    <ng-container *ngComponentOutlet="tab.content"></ng-container>
  </mat-tab>
</mat-tab-group>


tabs = [{ caption: 'First', content: Content1Component }, { caption: 'Second', content: Content2Component }];
  
  constructor() { }

  ngOnInit(): void {
  }

  addTab(caption: string, content: string) {
    this.tabs.push({ caption: caption, content: Content1Component });
  }