Я пытаюсь преобразовать какое-то старое приложение в 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
, потому что каждый модуль использует свой собственный Инжектор. Я до сих пор не могу найти решение этой проблемы, не удаляя ленивую загрузку из проекта, что звучит неправильно.