用途:在 Angular v20+ 中创建自定义指令,实现可复用的 DOM 操作与行为扩展,例如修改元素外观或行为、监听事件、渲染到其他 DOM 位置。
主要能力:
- 属性指令:通过 selector 绑定,使用 input、effect、inject(ElementRef) 修改元素样式;优先使用 host 对象替代 @HostBinding/@HostListener。
- 类与样式操作:在 host 中声明 class、[class.xxx]、[attr.xxx] 绑定,配合 input 与 booleanAttribute 变换。
- 事件处理与键盘快捷键:在 host 中监听 document 级事件,如点击外部关闭、组合键判断并触发 output。
- 结构指令:用于 portal(把内容渲染到指定容器)、懒渲染(条件首次为真时渲染一次)、带上下文的模板出口;条件与循环建议用原生 @if、@for、@switch。
- 宿主指令:通过 hostDirectives 在组件上组合 Focusable、Disableable 等指令,并暴露其 inputs 与 outputs。
- 指令组合 API:将 Ripple、Elevation、Disableable 等基础指令组合进组件。
使用方式:以 TypeScript 装饰器 @Directive 定义,selector 用属性选择器,模板中按属性用法调用;示例包括 appHighlight、appTooltip、appButton、appClickOutside、appShortcut、appPortal、appLazyRender、appTemplateOutlet 等。
适用场景:需要跨组件复用元素行为、封装可访问性交互、控制渲染位置或延迟渲染时。
限制:资料仅面向 Angular v20+;条件与循环不应用结构指令而用原生控制流;更高阶模式参考 references/directive-patterns.md;资料未提供安装命令、收费、价格或平台信息。