如何解决Angular Service注入类的静态键
我有一个跨多个项目使用的全局设置服务。它可以根据复杂的键来获取设置。为避免混淆,我创建了一个SettingsKeys类,为这些复杂的键提供了开发人员友好的名称。
export class SettingsKeys {
public static showSpecialKey = 'SpecialComplexKey34567898798';
public static hideSpecialHey = 'HideComplexKey2384785994';
public static getKey(key: string) {
return this[key];
}
}
此设置使我可以直接访问代码中的键(SettingsKeys.showSpecialKey),也可以使用函数通过动态方式获取键。
我发现,对于多个项目,我需要为每个项目使用不同的SettingsKeys类,因为一个项目而不是其他项目需要一些密钥,并且我不想将密钥分配给与它们无关的项目太。我还了解到,我在app.component.ts文件中每个项目的开头都调用了相同的函数,用于基于键初始化配置设置。因此,我在自己的本地服务中创建了一个类似这样的函数,可在其他地方重用:
initConfigurationSettings(configSettings: any) {
for (const key of Object.keys(configSettings)) {
configSettings[key] = this.settingsService.getValueByKey(SettingsKeys.getKey(key));
if (configSettings[key] === undefined) {
return false;
}
}
return true;
}
我意识到最好的做法是使“本地服务”成为另一个全局服务(如上述设置服务),但是这要求我将当前项目的SettingsKeys类插入或注入到该服务中。我已经见过useValue,useFactory等提供程序的问题。有人可以指导我这样做的最佳方法是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。