Я пытаюсь запустить контрольные примеры для моего приложения. Я использовал сервис i18n, который я использовал для своего компонента в целях перевода. При попытке запустить код выдает ERROR: Failed to initialize translation service
.
Вот мой код для sector-diversification-sector.model.ts file
import { TranslateService } from '@ngx-translate/core';
import { combineLatest } from 'rxjs';
import { NumberFormattingService } from '@trp/gdx-wc-core-services';
import { TableCellValue, TableColumnHeader, TableModel, TableRow } from '@trp/gdx-wc-layout';
import { Labels } from '../../../constants/labels';
import { Scss } from '../../../constants/scss';
import { JsonArrayDataTransformer } from '../../../util/json-array-data-transformer';
import { ISectorDiversification } from './sector-diversification';
export class SectorDiversificationTableModel {
private static _SECTOR = 'SECTOR';
private static _PERCENTAGE_OF_FUND = 'PERCENTAGE_OF_FUND';
private static _SECTOR_DIVERSIFICATION_EQUITY = 'SECTOR_DIVERSIFICATION_EQUITY';
private static _SECTOR_DIVERSIFICATION_FIXED_INCOME = 'SECTOR_DIVERSIFICATION_FIXED_INCOME';
private static _NOT_AVAILABLE = 'NOT_AVAILABLE';
private _dataTransformer = new JsonArrayDataTransformer<ISectorDiversification>();
private _sectorDiversificationData: ISectorDiversification[];
private _tableModel: TableModel;
constructor(private numberFormatter: NumberFormattingService,
private translateService: TranslateService,
private sectorColumnHeading) {}
/**
* The Table Model to be used to build the Full Holdings Table.
*/
public get tableModel(): TableModel {
return this._tableModel;
}
/**
* Initialises the model with the data which will be used to build the table model.
*
* @param data - sector diversity can either be passed as an array or a JSON format string.
*
* @returns true when the model is valid and has more than one row
*/
public initModel( data: (ISectorDiversification[] | string)): boolean {
this._sectorDiversificationData = this._dataTransformer.transformIfNeeded(data);
this._tableModel = TableModel.builder()
.withColumnHeaders(this.buildTableModelColumnHeaders())
.withRows(this.buildTableModelRows())
.build();
return (this._tableModel.rows.length > 0 );
}
/**
* Waits for the translation service to initialise
*/
public async initTranslationService(): Promise<boolean> {
return await this.initTranslation();
}
/**
* Run the translation process - it will translate all static strings declared above.
*/
public initTranslation(): Promise<boolean> {
return new Promise((resolve, reject) => {
const labelsArr = [{}, {}, {}, {}, {}];
labelsArr[0][SectorDiversificationTableModel._SECTOR] = this.sectorColumnHeading;
labelsArr[1][SectorDiversificationTableModel._PERCENTAGE_OF_FUND] = Labels.PERCENTAGE_OF_FUND;
labelsArr[2][SectorDiversificationTableModel._NOT_AVAILABLE] = Labels.NA;
labelsArr[3][SectorDiversificationTableModel._SECTOR_DIVERSIFICATION_EQUITY] = Labels.SECTOR_DIVERSIFICATION_EQUITY;
labelsArr[4][SectorDiversificationTableModel._SECTOR_DIVERSIFICATION_FIXED_INCOME] = Labels.SECTOR_DIVERSIFICATION_FIXED_INCOME;
const promiseArr = [];
labelsArr.forEach((labelVal) => {
promiseArr.push(this.translateService.stream(labelVal[Object.keys(labelVal)[0]], {}));
});
combineLatest(promiseArr).subscribe((results) => {
if (this.translateService.getLangs().length >= 1) {
results.forEach((labelTranslation, i) => {
SectorDiversificationTableModel[`_${Object.keys(labelsArr[i])[0]}`] = labelTranslation;
});
resolve(true);
} else {
console.error('Failed to initialise translation service');
resolve(false);
}
});
});
}
/**
* Builds a model to describe the table column headers in use (i.e. <th> tags)
*/
private buildTableModelColumnHeaders(): TableColumnHeader[] {
return [
TableColumnHeader.builder()
.withName(SectorDiversificationTableModel[this.sectorColumnHeading])
.build(),
TableColumnHeader.builder()
.withName(SectorDiversificationTableModel._PERCENTAGE_OF_FUND)
.withColumnHeaderClasses(Scss.CENTRE_JUSTIFY)
.withColumnCellClasses(Scss.CENTRE_JUSTIFY)
.build(),
];
}
/**
* Builds a model of the table rows in use (i.e. <tr> tags)
*/
private buildTableModelRows(): TableRow[] {
const tableRows: TableRow[] = [];
if (this._sectorDiversificationData) {
for (const row of this._sectorDiversificationData) {
const hasSector = row.sectorDiversificationName && (row.sectorDiversificationName.length > 0);
const hasPercentageOfTotal = !!row.percentOfFund;
// Check we've some data
//
if ( hasSector || hasPercentageOfTotal ) {
const sector = row.sectorDiversificationName || Labels.NA;
const percentageOfTotal = row.percentOfFund;
const percentageOfTotalFormatted = this.numberFormatter.percentage2DP(percentageOfTotal);
const tableRowCells = [
TableCellValue.builder().withValue(sector).build(),
TableCellValue.builder().withValue(percentageOfTotalFormatted).withSortValue(percentageOfTotal).build(),
];
const tableRow = TableRow.builder()
.withCells(tableRowCells)
.build();
tableRows.push(tableRow);
}
}
}
return tableRows;
}
}
Мне нужна помощь, чтобы решить эту ошибку. Я попытался разобраться и попытаться решить эту ошибку, внеся изменения в initTranslation function
. Но я не уверен, в чем проблема. Любые предложения приветствуются. Спасибо