Итак, прежде всего спасибо за содержательный урок! :-)
Однако я думаю, что здесь не хватает некоторых моментов, которые необходимы для полной интеграции вашего решения в реальное приложение. Я подумал, что оставлю здесь свои дополнения в качестве комментария на случай, если кто-то наткнется на те же проблемы, что и у меня.
Во-первых, я добавил возможность реагировать на языковые изменения из Translateservice вот так (это внутри настраиваемого класса MatPaginatorIntl):
импортировать {MatPaginatorIntl} из ‘@ angular / material’;
импортировать {TranslateParser, TranslateService} из ‘@ ngx-translate / core’;
класс экспорта CustomMatPaginatorIntl расширяет MatPaginatorIntl {
частный диапазонLabelIntl: строка;
конструктор(
private translateService: TranslateService,
private translateParser: TranslateParser
) {
супер();
this.getTranslations ();
this.translateService.onLangChange.subscribe (() = ›this.getTranslations ());
}
getTranslations () {
this.translateService
.get ([‘ITEMS_PER_PAGE_LABEL’, ‘NEXT_PAGE_LABEL’, ‘PREVIOUS_PAGE_LABEL’, ‘RANGE_PAGE_LABEL_2’])
.subscribe (translation = ›{
this.itemsPerPageLabel = перевод [‘ITEMS_PER_PAGE_LABEL’];
this.nextPageLabel = перевод [‘NEXT_PAGE_LABEL’];
this.previousPageLabel = перевод [‘PREVIOUS_PAGE_LABEL’];
this.rangeLabelIntl = перевод [‘RANGE_PAGE_LABEL_2’];
this.changes.next ();
});
}
getRangeLabel = (page, pageSize, length) = ›{
длина = Math.max (длина, 0);
const startIndex = page * pageSize;
const endIndex =
startIndex ‹длина? Math.min (startIndex + pageSize, length): startIndex + pageSize;
вернуть this.translateParser.interpolate (this.rangeLabelIntl, {startIndex, endIndex, length});
};
}
Во-вторых, я добавил фабричную функцию в модуль, куда импортируется MatPginatorModule, и внедрил необходимые сервисы:
функция экспорта createCustomMatPaginatorIntl (
translateService: TranslateService,
translateParser: TranslateParser
) {return new CustomMatPaginatorIntl (translateService, translateParser);}
Наконец, я добавил новый CustomMatPaginatorIntl в массив поставщиков того же модуля, например:
провайдеры: [{
предоставить: MatPaginatorIntl,
deps: [TranslateService, TranslateParser],
useFactory: createCustomMatPaginatorIntl
}]
Надеюсь это поможет!