我正在使用angular 4应用程序,并尝试将当前语言传递给toLocaleString()方法。方法mathoround是静态方法,无法理解this.translation.currentLang。 如何将非静态对象传递给静态方法。
import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
@Injectable()
export class ChartHelperService {
constructor( private translation: TranslateService) { }
static prepareChartTooltipRow(name: string, value: string, additionalStyle: string): string {
return '<tr style="background-color: initial;"><td style="text-align:left;' + additionalStyle + '"><b>' + name +
'</b></td>' +
'<td style="text-align: right;' + additionalStyle + '">' +
value +
'</td></tr>';
}
static showCcorYAxis(id: number): boolean {
return !(window.innerWidth < 992 && id !== 0);
}
static mathRound(input: number): string {
return Math.round(input).toLocaleString(this.translation.currentLang, { maximumFractionDigits: 0 });
}
}
答案 0 :(得分:1)
简单不要像对类即时操作那样尝试混合访问静态属性。
ChartHelperService作为静态类
export class ChartHelperService {
static translation:TranslateService;
setTranslationService( translation: TranslateService) {
ChartHelperService.translation = translation;
}
static prepareChartTooltipRow(name: string, value: string, additionalStyle: string): string {
return '<tr style="background-color: initial;"><td style="text-align:left;' + additionalStyle + '"><b>' + name +
'</b></td>' +
'<td style="text-align: right;' + additionalStyle + '">' +
value +
'</td></tr>';
}
static showCcorYAxis(id: number): boolean {
return !(window.innerWidth < 992 && id !== 0);
}
static mathRound(input: number): string {
return Math.round(input).toLocaleString(ChartHelperService.translation.currentLang, { maximumFractionDigits: 0 });
}
}
,您可以在AppComponent承包商上设置translation属性
export class AppComponent {
constructor( private translation: TranslateService ) {
ChartHelperService.setTranslationService(translation);
}
}
实用程序类中的ChartHelperService,因此您无需将其添加到提供程序列表中
已更新
ChartHelperService即服务
@Injectable()
export class ChartHelperService {
constructor( private translation: TranslateService) { }
public prepareChartTooltipRow (name: string, value: string, additionalStyle: string): string {
return '<tr style="background-color: initial;"><td style="text-align:left;' + additionalStyle + '"><b>' + name +
'</b></td>' +
'<td style="text-align: right;' + additionalStyle + '">' +
value +
'</td></tr>';
}
public showCcorYAxis(id: number): boolean {
return !(window.innerWidth < 992 && id !== 0);
}
public mathRound(input: number): string {
return Math.round(input).toLocaleString(this.translation.currentLang, { maximumFractionDigits: 0 });
}
}
在这种情况下,您需要向提供者列表中添加ChartHelperService
并将ChartHelperService
注入任何组件以获取ChartHelperService
的瞬间。
export class TestComponent {
constructor( private chartHelperService: ChartHelperService) {
console.log(this.chartHelperService)
}
}