构建可复用行为
将行为封装为可组合的指令
构建可复用行为 是 CoddyKit 上的免费 Angular Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Angular Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Angular Academy 课程共包含 4 节课。
作为构建模块的行为
当您设计小型且职责集中的指令,让每个指令封装一种行为,再根据需要将它们组合到组件上时,组合 API 的优势就能充分体现出来。
单一用途的指令
让每个行为都保持小巧且独立。
@Directive({
selector: '[appElevate]'
})
export class ElevateDirective {
@HostBinding('style.boxShadow')
shadow = '0 2px 8px rgba(0,0,0,.15)';
}悬停行为
另一个行为会监听悬停事件并切换一个类。
@Directive({ selector: '[appHoverClass]' })
export class HoverClassDirective {
@HostBinding('class.is-hover') hovering = false;
@HostListener('mouseenter') on() { this.hovering = true; }
@HostListener('mouseleave') off() { this.hovering = false; }
}组合行为
卡片组件可以组合这两种行为,无需在模板中进行连接配置。
@Component({
selector: 'app-card',
hostDirectives: [ElevateDirective, HoverClassDirective],
template: '<ng-content></ng-content>'
})
export class CardComponent {}跨组件复用
相同的行为可以组合到按钮、磁贴或面板上。定义一次,处处复用,无需重复编写。
可配置的行为
添加输入,使行为可以调节,然后在组合时将这些输入公开出来。
@Directive({ selector: '[appElevate]' })
export class ElevateDirective {
level = input(1);
}公开配置选项
公开可配置的输入,以便每个宿主都能设置它。
hostDirectives: [{
directive: ElevateDirective,
inputs: ['level']
}]协调行为
行为可以通过元素注入器相互注入,以便彼此协调,例如让波纹效果响应按下状态。
可测试性
小型行为易于单独进行单元测试,组合后也更容易验证,从而提高整体可靠性。
命名约定
根据行为的作用为其命名(appElevate、appHoverClass、appAutofocus)。清晰的名称能让组合关系一目了然。
行为库
随着时间推移,您可以构建一个可组合行为库,任何组件都能选择使用其中的行为,从而大幅减少重复的宿主逻辑。
快速检查
测试您对可复用行为的理解。
回顾
您学会了设计小型、独立的指令,让每个指令封装一种行为;使用 hostDirectives 组合这些指令;公开可调节的输入;并构建可复用且可测试的行为库。
常见问题解答
「构建可复用行为」课时是免费的吗?
是的 — 「构建可复用行为」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Angular Academy 课程的其余内容,请升级到 CoddyKit PRO。 Angular Academy 课程共包含 4 节课。
「构建可复用行为」这节课中我会学到什么?
将行为封装为可组合的指令 你通过在浏览器中直接运行的动手代码来练习 Angular Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Angular Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Angular Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「构建可复用行为」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Angular Academy 课中编写并运行代码吗?
能。每节 Angular Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。