Как получить экземпляр одноэлементной службы, которая находится в работающем модуле для функции справки для этого модуля? - PullRequest
0 голосов
/ 11 января 2019

Я делаю многоязычное приложение. Я использую пакет ngx-translate, все шло очень хорошо, потому что модуль ngx-translate предоставляет мне 2 варианта перевода, он предоставляет мне сервис перевода для перевода текстовых строк внутри component.ts и директиву | перевести, чтобы перевести текстовые строки в component.html.

Я использую угловую конструкцию материала, но раздел пагинатора (mat-paginator) можно получить только с помощью директивы углового материала, я изучил в интернете, как перевести эти строки, и тот же угловой материал дает вам возможность сделать это, на самом деле, это дает вам пример:

https://stackblitz.com/edit/angular-5mgfxh-6mbpdq

В примере показано, что вы должны использовать функцию справки для перевода текстовых строк, вызывая функцию в модуле, где перевод будет выполняться следующим образом:

app.module.ts

{предоставить: MatPaginatorIntl, useValue: getDutchPaginatorIntl ()}

export function getDutchPaginatorIntl() {
  const paginatorIntl = new MatPaginatorIntl();

  paginatorIntl.itemsPerPageLabel = 'Items per pagina:';
  paginatorIntl.nextPageLabel = 'Volgende pagina';
  paginatorIntl.previousPageLabel = 'Vorige pagina';

  return paginatorIntl;
}

Проблема здесь, как я могу внедрить экземпляр TranslateService, который находится внутри этого модуля в этой справочной функции?

Как я могу перетащить экземпляр службы перевода, который находится внутри этого модуля, в функцию справки, которая предназначена для перевода этого модуля?

В качестве дополнительных данных я импортирую модуль TranslateModule, предоставленный службой перевода, и конвейер перевода для всех компонентов в этом модуле.

Я уже пытался сделать это:

app.module.ts

{provide: MatPaginatorIntl, useValue: getTranslatePaginatorIntl, deps: [TranslateService]}

Функция getTranslatePaginatorIntl:

export function getTranslatePaginatorIntl (translate: TranslateService) {
  const paginatorIntl = new MatPaginatorIntl ();

  paginatorIntl.itemsPerPageLabel = 'Items per page:';
  paginatorIntl.firstPageLabel = 'First page';
  paginatorIntl.previousPageLabel = 'Previous page';
  paginatorIntl.nextPageLabel = 'Next page';
  paginatorIntl.lastPageLabel = 'Last page';

  return paginatorIntl;
}

И это не работает, Вы можете мне помочь?

У меня работает пример: https://stackblitz.com/edit/translate-mat-paginator-with-ngx-translate

...