Итак, прежде всего спасибо за содержательный урок! :-)

Однако я думаю, что здесь не хватает некоторых моментов, которые необходимы для полной интеграции вашего решения в реальное приложение. Я подумал, что оставлю здесь свои дополнения в качестве комментария на случай, если кто-то наткнется на те же проблемы, что и у меня.

Во-первых, я добавил возможность реагировать на языковые изменения из 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

}]

Надеюсь это поможет!