Не удалось инициализировать ошибку службы перевода - угловая - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь запустить контрольные примеры для моего приложения. Я использовал сервис 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. Но я не уверен, в чем проблема. Любые предложения приветствуются. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...