0

0

浅谈Angular模板指令:ng-template和ng-container的用法

青灯夜游

青灯夜游

发布时间:2021-08-05 10:38:24

|

7410人浏览过

|

来源于掘金社区

转载

本篇文章带大家简单了解一下angular模板的ng-template和ng-container指令,介绍一下ng-template和ng-container指令使用方法。

浅谈Angular模板指令:ng-template和ng-container的用法

ng-template指令简介

ng-template是一个 Angular 结构型指令,用来渲染 HTML。 它永远不会直接显示出来。 事实上,在渲染视图之前,Angular 会把 ng-template 及其内容替换为一个注释。【相关教程推荐:《angular教程》】

如果没有使用结构型指令,而仅仅把一些别的元素包装进 ng-template 中,那些元素就是不可见的。

像*ngFor、 *ngIf这些指令Angular内部会把这些属性翻译成一个 元素 并用它来包裹宿主元素。

ng-container指令简介

为了避免创建额外的div,我们可以改用ng-container,它是一个分组元素,但它不会污染样式或元素布局,因为 Angular 压根不会把它放进 DOM 中。ng-container 是一个由 Angular 解析器负责识别处理的语法元素。 它不是一个指令、组件、类或接口,更像是 JavaScript 中 if 块中的花括号。

ng-container用法

用法一(最基础的用法)

我们在一个列表循环里有写时候有一些判断要完成,我们知道angular的结构指令是不允许两个同时存在的,这个时候如果我们又不想增加多余的div就可以用ng-container

  • {{item.context}}

用法二(结合ngSwitch一起使用)


    标题
    内容
    其他

当然ngSwitch也可以直接写在html标签上。

用法三(结合ng-template使用)

可以跟template配合使用,将重复的模块内容抽取出来,也可传参给要显示的模板。 比如下面的这个例子,甲方有甲方姓名和介绍,乙方也同样有这些介绍,我们就可以把共同介绍整合出来。

甲方:
甲方姓名
乙方:
乙方姓名

合同介绍......

ngTemplateOutlet是定义模板引用和模板的上下文(即ng-template)对象的字符串,这样如果有多个模板引用可以用这种方式 ngTemplateOutletContext是附加到的上下文(即ng-template)对象EmbeddedViewRef。这应该是一个对象,该对象的键可用于本地模板let 声明的绑定。$implicit在上下文(即ng-template)对象中使用键会将其值设置为默认值。 ngTemplateOutlet也可用于外部传进来的模板

child.component.html

甲骨文AI协同平台
甲骨文AI协同平台

专门用于甲骨文研究的革命性平台

下载

child.component.ts

@Input() tplRef: TemplateRef

ng-template用法

用法一

结合*ngIf使用,这样可以不用加两次不同判断条件,可以在html里直接使用if else语句

{{text}}
暂无数据

用法二

页面里使用antd的modalService创建对话框时,可以模板写在html里面,通过引用加载过来放到modal的nzContent里(说的有点乱了,看代码吧)

xxxxxxx
export class AppComponent implements OnInit {
    // 引入模板
     @ViewChild('content') contentTpl: TemplateRef;
    ngOnInit() {
        this.modalService.create({
            nzTitle: '标题',
            nzContent: this.contentTpl
        })
    }
}

用法三

以模板的形式,作为一个输入变量传给组件,这样我们就可以在用这个组件时写成自己想要的内容 比如我们写个共用的暂无数据的组件,一般只用传text文字就可以有些特殊的时候我们可能需要一些新增按钮。

empty.component.html

浅谈Angular模板指令:ng-template和ng-container的用法
{{text || ''}}

empty.component.ts

export class EmptyComponent {
    @Input() text: TemplateRef
  isTemplate(text: any) {
      return text instanceof TemplateRef;
  }
}

总结,都是一些最基础的用法,现在所了解的就这些用法,如果有知道更多的欢迎大家补充。

更多编程相关知识,请访问:编程视频!!

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue.js:纪录片
Vue.js:纪录片

共1课时 | 0.2万人学习

Angular js入门篇
Angular js入门篇

共17课时 | 3.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号