如何获取正在运行的模块中的单例服务实例以获取该模块的帮助功能?

时间:2019-01-10 22:32:55

标签: angular typescript angular-material2 ngx-translate mat-table

我正在制作多语言应用程序。我使用的是ngx-translate软件包,一切都进行得很好,因为ngx-translate模块为我提供了2个翻译选项,它为我提供了翻译服务,以翻译components.ts和指令中的文本字符串。翻译以翻译components.html中的文本字符串。

我正在使用角度材料设计,但只能使用角度材料指令获得分页器部分(垫子-分页器),我在互联网上研究了如何翻译这些弦,相同的角度材料为您提供了一种方法实际上,它为您提供了一个示例:

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

0 个答案:

没有答案