angular - Valor-software/ngx-bootstrap 将组件放入动态创建的内容中

标签 angular tabs angular-components ngx-bootstrap mat-tab

我正在尝试使用 valor-software/ngx-bootstrap创建一个动态选项卡,但我想将组件的选择器放在动态创建的选项卡内容中,

在文档示例中我们有:

import { Component, ChangeDetectionStrategy } from '@angular/core';

@Component({
  selector: 'demo-tabs-dynamic',
  changeDetection: ChangeDetectionStrategy.OnPush,
  templateUrl: './dynamic.html'
})
export class DemoTabsDynamicComponent {
  tabs: any[] = [
    { title: 'Dynamic Title 1', content: 'Dynamic content 1' },
    { title: 'Dynamic Title 2', content: 'Dynamic content 2', disabled: 
true },
    { title: 'Dynamic Title 3', content: 'Dynamic content 3', 
removable: true }
  ];

  addNewTab(): void {
    const newTabIndex = this.tabs.length + 1;
    this.tabs.push({
      title: `Dynamic Title ${newTabIndex}`,
      content: `Dynamic content ${newTabIndex}`,
      disabled: false,
      removable: true
    });
  }

}

我希望能够做这样的事情:

import { Component, ChangeDetectionStrategy } from '@angular/core';

@Component({
  selector: 'demo-tabs-dynamic',
  changeDetection: ChangeDetectionStrategy.OnPush,
  templateUrl: './dynamic.html'
})
export class DemoTabsDynamicComponent {
  tabs: any[] = [
    { title: 'Dynamic Title 1', content: 'Dynamic content 1' },
    { title: 'Dynamic Title 2', content: 'Dynamic content 2', disabled: 
true },
    { title: 'Dynamic Title 3', content: 'Dynamic content 3', 
removable: true }
  ];

  addNewTab(): void {
    const newTabIndex = this.tabs.length + 1;
    this.tabs.push({
      title: `Dynamic Title ${newTabIndex}`,
      content: `<my-component></my-component>`, // Here is the change
      disabled: false,
      removable: true
    });
  }
}

Angular 将组件选择器清理为字符串有什么解决方法吗?

最佳答案

实际上我采用了这种不需要路径内容中的任何 html 的方法

 <tabset >
    <tab *ngFor="let tabz of mainMenuTab.tabs"
         [heading]="tabz.title"
         [active]="tabz.active"
         (select)="tabz.active = true"
         (deselect)="tabz.active = false"
         [disabled]="tabz.disabled"
         [removable]="tabz.removable"
         (removed)="removeTabHandler(tabz)"
         [customClass]="tabz.customClass">
            <div [ngSwitch]="tabz?.content">
               <app-employees-menu *ngSwitchCase="'employee'">
               </app-employees-menu>
               <app-inventories-menu *ngSwitchCase="'inventory'">
               </app-inventories-menu>
               <app-customers-menu *ngSwitchCase="'customer'">
               </app-customers-menu>
            </div>
    </tab>
 </tabset>

所以基本上我已经放置了我可能拥有的所有可能的选项卡,并且根据我需要显示的选项卡,我将传递充当开关的内容,并且在模板中有一个 switchCase 显示选项卡匹配 switchCase。

关于angular - Valor-software/ngx-bootstrap 将组件放入动态创建的内容中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47917969/

相关文章:

angular - 如何在 typescript 中动态构建返回语句?

javascript - 如何从后面的代码设置新窗口的高度和宽度

ionic-framework - 如何在所有页面上显示 Ionic Tabs?

css - 在 Bootstrap 3 选项卡 Pane 中跨越整个宽度的网格列

angular - CSS3 动画在 Angular 组件中不起作用

angularjs - Angular 1.5 组件 + ng-model $formatters 和 $parsers

具有多个值的 Angular 6 HostBinding?

angular - 如何将一张 SVG 图像导入到 typeScript/Angular 中?

html - 超出组件范围的 Angular2+ 样式父级

Angular2 路由器链接不工作