angular - Angular 最佳实践:将数据作为输入传递或使用查询参数
问题描述
我正在设计一个应用程序,并且混淆将是一种更好的做法。我想根据从其他组件获得的输入发出 http 请求。因此,我有 2 种不同的方式将数据从一个组件发送到进行 API 调用的组件(通过服务)。
- 使用@Input()
- 通过从 url 中提取查询参数(因为我想将输入数据保留在 url 中)
我不确定是在 ngOnChanges 生命周期挂钩 ( this._router.parseUrl(this._router.url).queryParams.fund1
) 中使用路由器服务的 parseUrl 方法获取数据,还是仅使用 ngOnChanges 进行以下检查
if (changes['fund1'] &&
changes['fund1'].currentValue &&
changes['fund1'].previousValue !== changes['portIdFund1'].currentValue
)
将路由器服务注入组件还是仅利用 Angular 本机 @Input 好?我必须用后者(@Input)编写更多代码。
解决方案
将Router服务注入组件好不好?
是的,这就是使用服务的方式/原因。
不要通过包含太多可以从服务中轻松获得的输入来过度复杂化您的组件。
但这并不意味着你可以肆无忌惮地使用服务。你需要保持平衡。
推荐阅读
- java - CloseHandle((Handle) 端口) 没有返回
- graphql - 如何将变量添加到 GraphQL 文件查询
- javascript - 如何将图像/纹理放在three.js 中的几何图形的一部分上?
- laravel - Laravel 调试栏会话消息未显示
- ansible - Ansible Molecule 传递多个 vault-id
- python - 指定使用多个套接字时从哪个套接字 IP 地址接收
- algorithm - 如何使用施特拉森算法将除 2 次方以外的度数矩阵相乘?
- sql - 如何基于一列连接多个表的结果(通过 UNION ALL)
- azure - 我如何在变量 ExpectedHttpStatusCode 上写
- marklogic - MarkLogic 可以从 Oracle 或 SQL Server 中提取数据吗?