Я пытаюсь преобразовать какое-то старое приложение в универсальный Angular (с Angular 9), и у меня проблема с настройкой ngx-datable для работы с рендерингом на стороне сервера. Я следовал официальному руководству по его настройке https://github.com/swimlane/ngx-datatable/blob/master/docs/universal/server-side-rendering.md
Но у меня проблема с размещением провайдеров
providers: [
{
provide: ScrollbarHelper,
useClass: ServerScrollBarHelper
},
{
provide: DimensionsHelper,
useClass: ServerDimensionsHelper
}
];
Мой AppRoutingModule
лениво загружает другие подмодули с помощью loadChildren
. Я также использую SharedModule
, где определены большинство моих клиентских провайдеров.
Я обнаружил, что могу получить доступ к ServerScrollBarHelper
и ServerDimensionsHelperthem
, только если я определю их внутри подмодулей, но проблема в том, что они должны работать только тогда, когда происходит рендеринг на стороне сервера Angular. Я попытался поместить их в список AppServerModule
провайдеров, но потом они как будто не определены.
Есть ли какой-нибудь пример этого, или кто-нибудь знает, как я могу легко загружать разных поставщиков для серверного и клиентского рендеринга, не слишком сильно меняя структуру моего приложения?
РЕДАКТИРОВАТЬ: поэтому я сузил свою проблему до ленивой загрузки, потому что с модулями загрузки layz вы не можете переопределить своих провайдеров из AppRoutingModule
, потому что каждый модуль использует свой собственный инжектор. Я все еще не могу найти решение, не удалив из проекта ленивую загрузку, что звучит неправильно.