一句话描述5个关键词的作用:

ng-template是备胎(模板):通常在html里面作为备用模板,当绑定了对应的#标记的时候才会显示

ng-container是舔狗(虚拟标签):包裹的内容显示,而自身标签不会出现在html中

ng-content是替身(替代组件包裹内容、插槽):通常出现在子组件中,用于替代父组件中><尖括号包裹的内容,并在子组件对应的ng-content位置渲染

ngTemplateOutlet是渣女的闺蜜(指向绑定的模板):让舔狗去做备胎就做备胎,做什么样的备胎就绑定对应的ng-template引用#标记

ngProjectAs是伪装兽:把标签匿名成其他名称被ng-content的select获取


接下来就用一个综合的例子讲解这5者分别的用处

[ngTemplateOutlet]等同于*ngTemplateOutlet,以下几种写法是等效的:
  <ng-container [ngTemplateOutlet]="myTemplate" ></ng-container>
  <ng-container *ngTemplateOutlet="myTemplate"></ng-container>
  <div [ngTemplateOutlet]="myTemplate" ></div><!--这里的div可以换成任意标签-->
  <div *ngTemplateOutlet="myTemplate"></div><!--这里的div可以换成任意标签-->

ng-content就是把父组件中,插入子组件俩尖括号夹住的html内容部分替代作为一个占位符使用,这里ng-content还有一个select属性可以分节点替代类似vue插槽的功能

父组件app.component.html代码

<app-home><ng-container [ngTemplateOutlet]="myTemplate" ></ng-container><hr><ng-container *ngTemplateOutlet="myTemplate"></ng-container><h1>这是个大标题</h1><hr><h2 class="small-title">这是个小标题</h2><hr><h3 ngProjectAs="sub-title">这是个副标题</h3></app-home><!-- 模板---------------------------------------- -->
<ng-template #myTemplate><b>这里是模板文字</b>
</ng-template>

子组件app-home.component.html代码

<ng-content select='sub-title'></ng-content>
<hr>
<ng-content select='.small-title'></ng-content>
<hr>
<ng-content select='h1'></ng-content>
<br>
<ng-content></ng-content>

最终渲染出来html如下

看下图的对比关系,就明白了这几个ng标签(属性) 有啥作用了

ng-template、ng-container、ng-content和ngTemplateOutlet、ngProjectAs傻傻分不清!他们究竟是干啥的???相关推荐

  1. cannot bind to cxOutlet since it is not a known property of ng template

    我在SAP Spartacus处于运行状态(即ng serve)始终处于运行状态时,进行代码热修改,经常遇到此类错误消息 退出ng serve,重新执行即可: 更多Jerry的原创文章,尽在:&quo ...

  2. ng build --aot 与 ng build --prod

    angluar的编译有以下几种方式: ng build  常规的压缩操作    代码体积最大 ng build --aot   angular预编译      代码体积较小 ng build --pr ...

  3. Select2(4.0.6)城市搜索

    实现了城市列表的前端搜索,输入汉字.拼音首字母均可搜索,前端搜索 效果图 select2.js需要做改动我从本站下的,需要修改matcher方法,现在贴出代码 /*!* Select2 4.0.6-r ...

  4. 傻傻分不清的Manifest

    在前端,说到manifest,其实是有歧义的,就我了解的情况来说,manifest可以指代下列含义: html标签的manifest属性: 离线缓存(目前已被废弃) PWA: 将Web应用程序安装到设 ...

  5. [译]ng指令中的compile与link函数解析 转

    通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link,post-link的用法与区别. 原文地址 angularjs里的指令非常神 ...

  6. ng命令汇总:Angular CLI 使用教程指南参考

    Angular CLI 使用教程指南参考 Angular CLI 现在虽然可以正常使用但仍然处于测试阶段. Angular CLI 依赖 Node 4 和 NPM 3 或更高版本. 安装 要安装Ang ...

  7. Angular应用ng serve命令行的学习笔记

    在Angular项目下执行命令行ng serve --open: The ng serve command builds the app, starts the development server, ...

  8. ng build --prod --aot打包Angluar4项目报javaScript heap out of memory,内存溢出

    这里 Allocation failed - JavaScript heap out of memory JavaScript堆内存不足,我们都知道 Node 是基于V8引擎,在一般的后端开发语言中, ...

  9. NG Command(命令)

    创建项目 ng new 项目名称 创建带路由 ng new 项目名称 --routing 启动项目 ng serve -open 简写 ng serve -o 创建模块 ng g module Mod ...

最新文章

  1. 封装caffe-windows-gpu(支持模型有多个输出)
  2. 优酷播控实践:基于规则引擎的投放管控模型
  3. c++拷贝、赋值和销毁的简单介绍
  4. 解决:java.lang.NoSuchMethodException: gentle.entity.User.<init>()
  5. CSS3 Flex 弹性布局用法详解
  6. PLC项目增频减频部分流程图(修改版)
  7. eclipse哪个版本最稳定_新版鹿鼎记开播啦,你最喜欢哪个版本?最还原原著的原来是他...
  8. 如何连接一个Linux服务器
  9. Win32 Console Application、Win32 Application、MFC三者之间的联系和区别
  10. 2021年PMP考试模拟题3(含答案)
  11. php input type属性,input标签是什么?input标签属性有哪些
  12. 一日一技:Python + Excel——飞速处理数据分析与处理
  13. JAVA利用jsoup爬取百度热点信息
  14. 含论文基于JAVA户籍信息管理系统【数据库设计、论文、源码、开题报告】
  15. 如何让你的网站地址在发送到QQ朋友的时候显示绿色安全图标呢?
  16. 全年股价暴涨超110% TTD能否杀出巨头们的围墙花园?
  17. ![CDATA[]] 的基本介绍
  18. mysql 按月 季度 统计数据
  19. yum安装git依赖包报错:/usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_cal
  20. 能熟练使用计算机并进行必要维护,省计应课程准(参考).doc

热门文章

  1. 关于打开新链接,用当前页还是用新页面?
  2. Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
  3. cannot access a closed file
  4. c语言分段错误空指针,C语言空指针总结 - 祂的小哥哥的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. linux内存分配 连续 足够,linux内存池能分配连续物理内存吗
  6. 计算机控制系统中的模拟输入通道需应用,远程西安交通大学17年3月课程考试《计算机控制技术》作业考核试题...
  7. greenplum 数据库如何增加列_Greenplum行存与列存的选择以及转换方法-阿里云开发者社区...
  8. python内置方法就是内置函数_python内置函数
  9. ajax用户登录模块,ajax用户注册模块
  10. Python装饰器的神奇功能:自动打印每个方法耗时