Angular 使用结构型指令构建按钮组件

202 阅读1分钟

前言

在使用结构型指令前,我们先了解几个 Angular 的高级功能,我们需要用到以下 api 去构建我们的按钮组件

  • 内容投影(ng-content)
  • 动态模板(ng-template、ngTemplateOutlet)
  • 查询内容(@ContentChild)
  • 结构型指令

最终实现效果,具有主题样式,大小尺寸的按钮组 image.png

内容投影

内容投影可以让我们在父组件中插入或投影另一个组件的内容,使组件的设计更为灵活,详细用法可以参考官方文档描述 在设计中我们让按钮组app-button-group、app-button接收用户的投影 image.png

动态模板

动态模板使用 ng-template、ngTemplateOutlet 来接收我们的组件蓝图,让动态数据渲染到 app-button-group,详细用法可以可以参考这篇文章 image.png

内容查询

ng-content 可以访问组件内容但不提供模板引用。我们可以使用 ContentChild 装饰器查询组件投影内容 image.png

结构指令

你一定使用过 NgIf、NgFor、NgSwitch 指令,这些指令都是 Angular 内置的结构型指令,详细用法可以参考官方文档 在设计中我们定义结构型指令来查询组件投影内容 image.png

最后

查看此 Stackblitz 以获取完整代码和演示