angular - 如何将服务注入另一个服务并在 Angular 中导出的常量或接口中使用它?
问题描述
我想将一个服务注入另一个服务,我想用它在导出的常量中翻译字符串。
我的代码目前看起来像这样(我在这里简化了它)
// Imports..
@Injectable(
{ providedIn: 'root' }
)
export class MyService {
constructor(private httpClient: HttpClient, private injectedService: InjectedService) {
}
// Methods..
}
export enum Series {
prop_1 = 'String_1',
prop_2 = 'String_2',
prop_3 = 'String_3',
}
export const ALL_SERIES: Series[] = [
this.injectedService.translate(Series.prop_1),
this.injectedService.translate(Series.prop_1),
this.injectedService.translate(Series.prop_1),
];
但是,我收到此错误,因为在组件外部未检测到注入的服务:
错误错误:未捕获(承诺):TypeError:无法读取未定义的属性“injectedService”
这个问题最干净的解决方案是什么?
解决方案
您可以简单地在服务中创建一个getSeries
返回常量值的方法。This
将在MyService
类内部定义,因此没有错误。
@Injectable({
providedIn: 'root'
})
export class MyService {
constructor(private httpClient: HttpClient, private injectedService: InjectedService) {}
// Methods..
getSeries(): Series[] {
return [
this.injectedService.translate(Series.prop_1),
this.injectedService.translate(Series.prop_1),
this.injectedService.translate(Series.prop_1),
];
}
}
export enum Series {
prop_1 = 'String_1',
prop_2 = 'String_2',
prop_3 = 'String_3',
}
而不是ALL_SERIES
你必须调用getSeries()
方法。
推荐阅读
- python - 在 python 控制台中锁定滚动
- c - 将字符串从静态内存复制到动态内存失败
- cartopy - Cartopy 系统范围内的自然地球 shapefile 位置
- javascript - TypeError: undefined is not a function (评估 userItems.map)
- c++ - 如何在字符串向量中分割一行
- swift - 使用编程约束和@IBDesignable 时设计时崩溃
- lombok - 如何调试 lombok val?
- python - 处理加载缓慢的网页,从我的脚本中删除硬编码延迟
- vba - 停止擦除代码中未提及的列中的内容
- python - strptime() 参数 1 必须是字符串,而不是 Django 类型