html - 来自客户特定模块的 Angular 8 覆盖模板
问题描述
我正在构建一个系统,其中核心应该能够处理不同的客户,并且我希望能够延迟加载覆盖不同组件模板的“客户特定”模块,假设我有一个 ShowBlogComponent 并且它有
<ng-container *ngTemplateOutlet="showblog"></ng-container>
<ng-template #showblog>
<div>SHOW MY BLOG FROM CORE</div>
</ng-template>
然后我想要一个模块 MyCustomerModule ,我们在其中加载一个新的 html 文件:
<ng-template #showblog>
<div>SHOW MY BLOG FROM MyCustomer</div>
</ng-template>
这会覆盖该特定客户的 HTML 模板。
我怎样才能做到这一点?
我将如何在 angularJs 中做到这一点:
templateUrl: getBlogTemplate()
function getBlogTemplate() {
if(customer)
return "customerBlogTemplate.html";
else
return "baseBlogTemplate.html";
}
解决方案
您可以为 ShowBlogComponent 创建基类 - 例如 showBlogComponentBase.ts。如果您使用惰性路由到不同的模块 - 每个模块路由都可以引导您到 showBlogComponentBase 的特定后代。
在每个组件文件中,您可以扩展基类并使用不同的本地 templateUrl html,但其背后具有相同的逻辑。
所以你可以拥有:
带有导出(或延迟路由)的common.module.ts common-show-blog.component.ts扩展了 showBlogComponentBase.ts
和
< your-custom-module >.module.ts 与导出(或延迟路由)< your-custom-module >-show-blog.component.ts扩展showBlogComponentBase.ts
推荐阅读
- r - R:循环只保存最终迭代?
- javascript - 将 Django 对象传递给 Javascript
- php - 使用 php 存在时增加值
- azure - Azure Kubernetes 服务是否支持 SSL3 协议
- node.js - Gulp 没有运行。它给出“SyntaxError:意外的令牌导入”错误
- twitter-bootstrap - 如何组织额外的网格层
- python - 如何将存储在熊猫数据框单元格中的 JSON 对象的键值连接成每行的字符串?
- flutter - 我的项目出错 - 在 null 上调用了方法“集合”
- html - 制作网格响应式引导程序
- java - 数据流管道 - 使用动态参数或查询