我想将一个服务注入另一个我想用来转换导出的常量中的字符串的服务。
我的代码当前看起来像这样(我已经在这里简化了)
// 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()
方法。