如何利用Angular指令保持关注点分离
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇文章将为大家详细讲解有关如何利用Angular指令保持关注点分离,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。假设在我们的应用程序中有一个日期选择器组件。用户每
千家信息网最后更新 2025年11月15日如何利用Angular指令保持关注点分离
这篇文章将为大家详细讲解有关如何利用Angular指令保持关注点分离,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
假设在我们的应用程序中有一个日期选择器组件。用户每次更改日期的时,都会给分析提供商发送一个事件。到目前位置,我们只使用过一次,所以这个分析接口可以放在使用它的组件中:
header-1.ts
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroyed';@UntilDestroy()class FooComponent { timespanControl = new FormControl(); ngOnInit() { this.timespanControl.valueChanges .pipe(untilDestroyed(this)) .subscribe(({ preset }) => { this.analyticsService.track('timespan-filter apply', { value: preset, }); }); }}但是,现在我们有更多的地方使用这段分析的接口,我们并不想重复的编写同样的代码。有人可能提出这段代码可以合并到日期选择器中并作为输入参数传递。
data-picker-1.component.ts
class DatePickerComponent { @Input() analyticsContext: string; constructor(private analyticsService: AnalyticsService) {} apply() { this.analyticsService.track('timespan-filter apply', { context: this.analyticsContext, value: this.preset, }); ... }}确实,这样可以实现,但是这并不是理想的设计。关注点分离意味着日期选择器本身是和分析接口没有关系的,它也不需要了解任何分析接口的信息。
此外,因为日期选择器是一个内部的组件,我们可以修改他的源码,但是如果是第三方的组件?该如何解决?
这里更好的选择时Angular指令,创建一个指令,通过DI获取表单的引用,订阅内部值的修改来触发分析事件。datePickerAnalytics.directive.ts
@UntilDestroy()@Directive({ selector: '[datePickerAnalytics]',})export class DatePickerAnalyticsDirective implements OnInit { @Input('datePickerAnalytics') analyticsContext: string; constructor( private dateFormControl: NgControl, private analyticsService: AnalyticsService ) {} ngOnInit() { this.dateFormControl .control.valueChanges.pipe(untilDestroyed(this)) .subscribe(({ preset }) => { this.analyticsService.track( 'timespan-filter apply', { value: preset, context: this.analyticsContext } ); }); }}现在可以在每次使用日期选择器时使用它了。
关于"如何利用Angular指令保持关注点分离"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
日期
分析
选择
指令
接口
组件
关注点
更多
篇文章
事件
代码
不错
实用
位置
信息
内容
参数
地方
应用程序
意味
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
美团有什么好的服务器
计算机家庭网络安全信息
唯品会软件开发加班多吗
黟县淮猫网络技术有限公司
网络安全政策篇
淘宝签名服务器
湖北会计软件开发公司
江苏学生网络技术服务商家
西安富士通软件开发工程师
NSM下载软件开发
榆林软件开发培训的学校
服务器内存ddr3频率
网络技术中心是干什么的
旬邑县网络安全宣传活动
未建立麻醉质控相关数据库
网络安全工作方案 榜样推选
郑州服务器数据恢复
计算机网络技术学科大学排名
南邮数据库课件
杨浦区创新软件开发厂家用户体验
计算机网络技术600字
happygo服务器怎么进入
网贷软件开发哪里学
数据库创建排序索引
信用卡数据库设计
数据库批量识别
pc机和服务器cpu有什么区别
平台软件开发哪家靠谱
ipd的软件开发流程
关于网络安全方面的快板