Angular - 组件不同的模板

Posted

技术标签:

【中文标题】Angular - 组件不同的模板【英文标题】:Angular - Component different templates 【发布时间】:2017-10-27 00:50:00 【问题描述】:

我有一个组件“课程”。我将此组件用于列表。该列表有时是水平的,有时是垂直的。我可以在模板文件的组件内动态选择吗?

@Component(
    selector: 'course',
    templateUrl: getTemplateFile()
)

这样的功能会很棒!

【问题讨论】:

【参考方案1】:

我觉得这个教程很有帮助

https://scotch.io/tutorials/component-inheritance-in-angular-2

您可以简单地扩展您的基础组件并覆盖模板。这允许您拥有功能完全相同但模板不同的不同组件。

【讨论】:

【参考方案2】:

当然,从 Angular 4 开始,就有一个 *ngIf/else 指令。您可以像这样切换模板:

<div *ngIf="isHorizontal; else verticalTemplate">
  <span>horizontal</span>
</div>

<ng-template #verticalTemplate>
  <span>vertical</span>
</ng-template>

我猜,您想根据屏幕宽度在水平和垂直布局之间切换。所以看看https://github.com/angular/flex-layout,它包含一个 ObservableMedia-Service。

【讨论】:

水平和垂直只是我的一个例子。我的问题的主要目的是我希望我的组件有 2 个不同的模板文件并选择我要使用的一个。我不想加载包含所有不同模板的模板文件。 你在使用 angular-cli 吗? 据我所知,没有办法在这个位置动态加载模板,我认为这不是必需的。我认为,推荐的方法是创建两个组件,并在父组件中切换两者,就像我的回答一样。使用 angular-cli,您的模板将被捆绑到 js 文件中,因此无论是否使用,它们都会被加载。延迟加载的最佳方式是使用路由器

以上是关于Angular - 组件不同的模板的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 1.5 中为同一组件使用不同的模板 url

带有动态模板或 templateUrl 的 Angular 2/4 组件

我想在 Angular 2 中根据不同的端点数据显示不同的组件

没有模板局部变量的Angular 4访问模板元素

Angular:如何将组件用作路由条目和另一个组件的模板

具有多个子组件实例的Angular2父组件