Angular的内容投影的分类和使用 ng-content ng-container ng-template ngProjectAs

一.什么是内容投影

官方解释:内容投影是一种模式,你可以在其中插入或投影要在另一个组件中使用的内容。例如,你可能有一个 Card 组件,它可以接受另一个组件提供的内容。
用人话说就是:内容投影是组件间嵌套原生HTML标签的一种方式。
父组件中嵌套子组件(HTML),自不必多说,原本就是支持的;而子组件中嵌套父组件的HTML,是内容投影的主要应用场景。
那么如何使用它呢?

二.内容投影分类和使用

1.单插槽内容投影

父组件模板:

	<app-singleprojection>
		<h3>singleprojection works!</h3>
	</app-singleprojection>

子组件模板:

	<ng-content></ng-content>

父组件模板的 <app-singleprojection> 标签中的内容,将以HTML在子组件中渲染:
在这里插入图片描述

2.多插槽内容投影

一个组件可以具有多个插槽。每个插槽可以指定一个 CSS 选择器,该选择器会决定将哪些内容放入该插槽。
使用此模式,必须指定希望投影内容出现的位置。使用 <ng-content> 的 select 属性来指定位置。
父组件模板:

	<app-multiprojection>
		<h1 title>multiprojection works!</h1>
		<h4 content>multiprojection works!</h4>
	</app-multiprojection>

子组件模板:

	<div class="test-child">
		<p>标题</p><br>
		<ng-content select="[title]"></ng-content>
	</div>
	
	<div class="test-child">
		<p>内容</p><br>
		<ng-content select="[content]"></ng-content>
	</div>

select 选择器有四种选择方式:

a).select="***"投影父组件中的 *** 标签或者组件内容

b).select=".***":投影父组件里class为 *** 的标签或者组件内容

c).select="[key=value]":选择设置了属性的key值为"value"的html标签或者组件,上例中即为此方式

d).ngProjectAs别名方式:在父组件中需要投影的标签上,通过 ngProjectAs 属性值设置标签别名为***,子组件中设置select="***",子组件将投影父组件中的 *** 标签或者组件内容
父组件模板:

	<app-projectas>
		<div ngProjectAs="title">
			<h1>multiprojection works!</h1>
			<h4>multiprojection works!</h4>
		</div>
	</app-projectas>

子组件模板:

	<div class="test-child">
		<p>标题</p><br>
		<ng-content select="title"></ng-content>
	</div>

注意:select的值不能设置为动态的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

^_^ 努力生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值