Angular指令怎么保持关注点的分离
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,小编给大家分享一下Angular指令怎么保持关注点的分离,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!假设在我们的应用程序
千家信息网最后更新 2025年01月20日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, }); }); }}
但是,现在我们有更多的地方使用这段分析的接口,我们并不想重复的编写同样的代码。有人可能提出这段代码可以合并到日期选择器中并作为输入参数传递。【相关教程推荐:《angular教程》】
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安全错误
数据库的锁怎样保障安全
安全检测服务器怎么关
西宁机架式服务器
米菲代理云仓软件开发
尖端的软件开发技术
网络安全模式桌面崩溃
网络安全海报展示架
面试中兴的网络技术工程师经验
计算机网络技术基础密码
无锡企业软件开发商家
智慧网络技术有哪几种
南京服务器租用
同时打开微信数据库
软件工程 软件开发方向
现在主流的软件开发语言是
软件开发阶段输入输出
数据库中学号英文
大连天奥网络技术有限公司
手机玩游戏后无法连接服务器
plc如何与服务器交互
成都有公司招聘服务器专业人员吗
图钉下载软件开发
晨华软件开发
linux服务器书籍
网络技术是物联网技术吗
文都考研软件开发
光纤网络技术有限公司招聘
非地理数据库MS访问表不应直接
张家界胖韭网络技术有限公司
网络安全设备申报理由
成都电脑软件开发哪家实惠