Попытка отложенной загрузки пользовательского модуля, связанного с Angular Material, для отложенных загруженных компонентов с помощью forRoot () не работает - PullRequest
0 голосов
/ 31 января 2019

У меня есть ленивая загрузка модулей через угловую маршрутизацию, я использую angular-material пакет для рендеринга данных.В соответствии с рекомендациями я создал пользовательский модуль для компонентов materail с именем MaterialModule (с помощью метода forRoot). Я импортирую его в app-module как forRoot: MaterialModule.forRoot(),, однако в моих лениво загруженных компонентах / модулях это MaterialModule недоступен, если я не импортирую его явно во все лениво загруженные модули.

app-module.ts
imports: [
BrowserModule,
AppRoutingModule,
MaterialModule.forRoot(),
CoreModule]

=============

material-module.ts
export class MaterialModule {
  static forRoot(): ModuleWithProviders {
  return {
    ngModule: MaterialModule
   }
 }
}

Есть ли способ сделать совместно используемый модуль (например, MaterialModule)доступно для всех лениво загруженных модулей в угловых.

1 Ответ

0 голосов
/ 31 января 2019

Здесь все в порядке.Объявления модуля доступны только тогда, когда они экспортируются в модуль, и модуль импортируется в другой модуль, где вы хотите их использовать, только материалы поставщиков будут распределены по всему вашему приложению.

Наличие модуля с forRoot - это просто соглашение, чтобы инициализировать вещи один раз или создать шаблон синглтона.

Но если вы хотите использовать вещи из этого модуля, вы должны импортировать их в каждый модуль, где вам это нужно, конечно, без forRoot.

Это все о сфере действия, которые имеют провайдерыглобальная область, что означает, что это видно везде.Объявления имеют закрытую область, что означает, что они видны только внутри текущего модуля.Если вы хотите использовать их в другом месте, вам нужно экспортировать их в их собственный модуль и импортировать этот модуль в другой модуль, чтобы использовать их.

Вот статья о ngModules, в которой это объясняется более подробно: https://medium.com/@cyrilletuzi/understanding-angular-modules-ngmodule-and-their-scopes-81e4ed6f7407

Когда дело доходит до отложенной загрузки, то же самое, за исключением того, что поставщики отложенных загруженных модулей доступны только после загрузки модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...