angular - environment 与 useValue 的常量
问题描述
假设我有一组链接,我想将它们添加到单独的文件中,如下所示:
export const SITE_LINKS = [
{ text: 'About', path: '/about' },
{ text: 'Projects', path: '/projects }
]
我会使用它们,比如说在两个地方:header.component.ts
和footer.component.ts
<ul>
<li *ngFor="let link of links">
<a [routeLink]="link.path">{{ link.text }}</a>
</li>
</ul>
在 Angular 中添加常量的首选方法是什么?
我可以看到两种方式:
- 将它们添加到
environment.ts
文件中
export const environment = {
production: false,
siteLinks: SITE_LINKS
};
- 将它们添加为依赖项,以便 DI 框架能够解决它们。
const siteLinks = new InjectionToken<string[]>('site links')
providers: [
{ provide: siteLinks: useValue: SITE_LINKS }
]
我想知道 w/c 一种是更好的方法,在什么情况下我应该更喜欢其中一种?
解决方案
environment.ts
- 如果您正在处理有关重要凭证或配置的常量,例如API 端点、应用程序 ID、密钥和其他类似的,这些常量将在每个环境中发生变化,请使用此选项。
- 当我们切换环境时即将改变的变量,例如
dev, prod, test
- 调查一下
SITE_LINKS
,我认为把它放在这里是不对的,不管环境如何,我认为那些来自的项目SITE_LINKS
仍然会保持不变
Providers
- 是的,你可以使用这个
Alternative
- 如果这些
SITE_LINKS
仅用于页眉和页脚并且它们位于 /shared 文件夹中,我建议创建/constants
(或您希望命名的任何目录名称)来保存这些类型的常见/常量数据并直接将它们的路径导入他们将被使用的指定组件
/constants
site-links.constant.ts
推荐阅读
- ios - 表格视图单元格元素无法单击并获取数据
- python - Pyqt5的Lineedit中如何避免Null或空值
- c# - 以编程方式从 nopCommerce 缓存中清除产品
- ruby-on-rails - 如何在rails中使用carrierwave保存blob文件
- vim - 如何使用 Vim-lsp 使用函数括号或参数完成
- python-3.x - python参数中的方括号是什么意思
- python - Emacs 和 conda 解决方法
- php - 带图像的 PHP-iOS 推送通知
- python - 如何使用 python 3 解码数据帧中的字节数组列?
- java - 检查是否存在具有给定值的 Elasticsearch 文档的最有效方法