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

本篇文章带大家简单了解一下angular模板的ng-templateng-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上 -->        
    
        
        
乙方:
        
            乙方姓名                    
    
                

合同介绍......

    

登录后复制

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

child.component.html


登录后复制

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;  }}

登录后复制

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

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

以上就是浅谈Angular模板指令:ng-template和ng-container的用法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2709217.html

(0)
上一篇 2025年3月7日 20:29:42
下一篇 2025年2月24日 15:54:47

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Angular组件怎么进行通信?父子组件通信的2种方法

    本篇文章带大家了解一下angular中的组件通信,介绍一下父子组件间通信、无直接关系组件间通信的方法。 在实际的应用中我们的组件将会以树形的结构进行关联,所以组件间的关系主要就是:父子关系兄弟关系无直接关系【相关教程推荐:《angular教…

    2025年3月7日 编程技术
    200
  • Angular组件学习之浅析内容投影

    本篇文章带大家了解一下angular组件中的内容投影。内容投影和vue中的插槽很类似,在组件封装的时候非常有用,我们一起来体验一下 【相关教程推荐:《angular教程》】 1. 投影一块内容 容器组件这样写   编号1   登录后复制 业…

    2025年3月7日
    200
  • Angular父子组件间怎么进行通信?父子传值的方式浅析

    angular父子组件间怎么进行通信?本篇文章给大家介绍一下angular父子组件传值方式。 通过Input和Ouput传值 父组件:html和ts 登录后复制 public name: string = “jack”;public cha…

    2025年3月7日
    200
  • 带你详细了解Angular中的变更检测

    本篇文章带你详细了解一下Angular中的变更检测,给大家介绍一下Angular 的 DOM 更新机制、变更检测能解决什么问题等。 通过这篇的文章,可以帮助你收获这些知识: Angular 的 DOM 更新是如何做到的?【相关教程推荐:《a…

    2025年3月7日 编程技术
    200
  • Angular怎么构建组件?3种方法介绍

    angular怎么构建组件?本篇文章给大家介绍一下angular创建项目的方法,angular创建组件的三种方式。 一、angular 与angularjs的区别是什么? 命名变化,Angular2 以后官方命名为Angular, 2.0 …

    2025年3月7日 编程技术
    200
  • 浅谈Angular组件之间通信的5种方法

    angular组件间怎么通信?下面本篇文章给大家介绍一下angular组件之间通信的5种方法,有需要的可以参考~ 组件是angular的构建单元,在项目中为了保证组件之间的数据能够来回的传递,angular封装了一些能够实现组件之间通信的方…

    2025年3月7日
    200
  • 手把手教你使用Angular CDK Portal创建动态内容

    之前介绍过原生 API 的动态视图插入,功能上已经可以满足大多数使用场景。不过也有一些缺憾,还没有解决在 Angular 应用外插入内容的需求,指令也不能跟动态插入的组件有输入输出的交互。 好在 Angular 官方提供了一套组件开发套件 …

    2025年3月7日
    200
  • 浅谈Angular中如何使用路由?

    angular中如何使用路由?本篇文章就来带大家了解一下angular中使用路由的方法,快速入门angular路由,希望对大家有所帮助! 路由的概念在前端的框架中得到了广泛的应用,对于路由的感念不做阐述,路由的应用无外乎就是嵌套、传参,高级…

    2025年3月7日
    200
  • 聊聊Angular中的自定义管道

    angular中管道有什么用?特点是什么?怎么自定义管道?下面本篇文章带大家了解一下angular中的管道,介绍一下自定义管道的方法,希望对大家有所帮助! 一、管道的作用 方便我们在模板中对我们的数据进行格式化处理。【相关教程推荐:《ang…

    2025年3月7日
    200
  • 深入了解Angular中的路由

    什么是路由?本篇文章带大家深入了解一下angular中的路由,希望对大家有所帮助! 路由简介 路由是实现单页面应用的一种方式,通过监听hash或者history的变化,渲染不同的组件,起到局部更新的作用,避免每次URL变化都向服务器请求数据…

    2025年3月7日
    200

发表回复

登录后才能评论