如何利用Angular指令保持关注点分离
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章将为大家详细讲解有关如何利用Angular指令保持关注点分离,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。假设在我们的应用程序中有一个日期选择器组件。用户每
千家信息网最后更新 2025年02月01日如何利用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安全错误
数据库的锁怎样保障安全
网络安全的微网文600字
妨害信息网络安全罪
山东港口集团软件开发工作干什么
怎么快速将Excel导入数据库
程序中的网络连接数据库
网络安全盾牌绘画
主机无法连接到ea服务器
八方服务器
新余飞烁英泰软件开发有限公司
天一银河网络安全
网络安全威胁可分为哪两类
数据库不建索引能进行查找吗
电脑版微信数据库备份
共建网络安全黑板报图片大全
a8网络安全
神武2手游 服务器等级
监控有多少才用服务器
和燊互联网科技
sql数据库 20g
苏州电子网络技术服务电话
学软件开发到底好不好
网络安全员使用技巧
学软件开发学校杭州几年制
数据库经理工作内容
服务器规格1u是什么意思
怎样安装数据库监控
疫情环境下如何迎接网络安全治理
网络安全和读书手抄报图片
网络技术文化墙
反编译apk更改游戏服务器