如何在单独的文件中加载 ng-template?

新手上路,请多包涵

在下面的示例中,我使用 ng-template 如下所示,它工作正常。

示例链接: 点击此处

 <ng-template #template let-dataSource="">
  <span *ngIf="dataSource.iconCss" class="e-menu-icon {{dataSource.iconCss}}"></span> {{dataSource.header}} {{dataSource.text}}
  <span *ngIf="dataSource.templateHeader" class="e-login-content">
        <button ejs-button cssClass="e-info">Sign In</button>
      </span>
</ng-template>

我想为 ng-template 内容创建一个新文件,我想在另一个文件中使用它。我试过如下但没有工作。请帮我找到这个案例的解决方案。

模板.html

 <ng-template #template let-dataSource="">
  <span *ngIf="dataSource.iconCss" class="e-menu-icon {{dataSource.iconCss}}"></span>
  {{dataSource.header}} {{dataSource.text}}
  <span *ngIf="dataSource.templateHeader" class="e-login-content">
    <button ejs-button cssClass="e-info">Sign In</button>
  </span>
</ng-template>

默认.html

 <div class="control-section">
  <ejs-menu #menu [items]='dataSource' [fields]='menuFields'>
    <ng-container *ngTemplateOutlet="template;"></ng-container>
  </ejs-menu>
</div>

示例 2: 示例 2

参考 stackoverflow 问题: angular2 ng-template 在一个单独的文件中

原文由 Kumaresan Sd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 575
2 个回答

我从 github 角度得到了这个问题的答案,请检查这个 https://github.com/angular/angular/issues/27503

回答:

步骤1:

我已经将我的模板初始化为一个新组件,如下所示

模板.component.ts

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

@Component({
  selector: 'app-device',
  template: `
  <span *ngIf="dataSource.iconCss" class="e-menu-icon {{dataSource.iconCss}}"></span>
  {{dataSource.header}} {{dataSource.text}}
  <span *ngIf="dataSource.templateHeader" class="e-login-content">
    <button ejs-button cssClass="e-info">Sign In</button>
  </span>
`
})
export class DeviceComponent {
  @Input()
  dataSource: any;
}

然后我在我的父组件中使用了该组件模板,如下所示

默认.html

 <div class="control-section">
	<ejs-menu #menu [items]='dataSource' [fields]='menuFields'>
    <ng-template #template let-dataSource>
      <app-device [dataSource]="dataSource"></app-device>
    </ng-template>
  </ejs-menu>
</div>

示例链接 示例点击我

原文由 Kumaresan Sd 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以为模板创建一个组件(将其命名为 tplComponent ),并在其中创建任意数量的模板。然后在其他组件中,获取 tplComponent 的实例并从中获取模板。这是一个有这种方法示例的 问题(尽管我还没有尝试过)。

如果可行,请告诉我。

原文由 Vahid 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题