Сегодня я пытаюсь реализовать службу перевода в ts-файле, как и везде в моем приложении, прежде всего, у этого класса:
export class GaugeChartAdapter<T = any> extends ChartAdapter<T> {
constructor(protected translate: TranslateService) {
super(translate);
}
public process() {
...
options.series = options.series.map(elem => {
if (lang === 'fr') {
switch (elem.name) {
case 'Institution':
elem.name = this.translate.instant('COMPANY');
...
}
}
Я должен реализовать также в классе ChartAdapter, иначе я получил эта ошибка:
Type 'typeof GaugeChartAdapter' is not assignable to type 'new () => ChartAdapter<any>'
вот так я сделал:
export abstract class ChartAdapter<T> {
constructor(protected translate: TranslateService) {
}
abstract process(...): any;
}
Моя проблема в том, что в навигаторе у меня:
core.js:4098 ERROR TypeError: Cannot read property 'instant' of undefined
Спасибо за помощь.
РЕДАКТИРОВАТЬ
Создается моя фабрика диаграмм:
export const graphsOptions: { [name: string]: any } = {
'gauge': GAUGE_OPTIONS,//comming from a class
//others graph..
};
export const graphsAdapters: { [name: string]: new () => ChartAdapter<any> } = {
'gauge': GaugeChartAdapter,
//others graph..
};
export class ChartCreator {
public static createChart(key: string, element: HTMLElement, chartParams, callback?: any) {
graphsOptions[key]['lang'] = chartParams.lang;
graphsOptions[key]['title'] = chartParams.title;
if (chartParams.colors && key === 'pie') {
graphsOptions[key]['plotOptions']['pie']['colors'] = chartParams.colors;
}
const adapter = new graphsAdapters[key];
return chart(element, adapter.process(graphsOptions[key], chartParams.data), callback);
}
public static createGauge(key: string, element: HTMLElement, data: any, total: number, lang: string, callback?: any) {
const adapter = new graphsAdapters[key];
return chart(element, adapter.process(graphsOptions[key], data, total, lang), callback);
}
public static createMap(key: string, data: any) {
data[0][0] = data[0][0].toLowerCase();
const adapter = new graphsAdapters[key];
return new MapChart(adapter.process(graphsOptions[key], data));
}
};