Как ленточная загрузка зависимых модулей для углового маршрутизатора работает без проблем, но не пользовательский ленивый загруженный модуль - PullRequest
0 голосов
/ 08 июля 2019

По какой-то уважительной причине я пытаюсь удалить маршрутизацию (в данном случае ее ленивую) из моего приложения angular 6. Я использую NgModuleFactoryLoader для загрузки динамических компонентов и модулей. См. Ниже статью

https://netbasal.com/the-need-for-speed-lazy-load-non-routable-modules-in-angular-30c8f1c33093

Итак, у меня есть ленивый модуль ModuleA, который зависит от mat-dialog, который загружает компонент с именем FilterComponent часть entryComponent, предоставленного другим модулем FilterModule (уже добавленным в массив импорта модуля A, а не где-либо еще).

//Ignore the syntax
CompA {
  openDialog() {
    matDialog.open(FilterComponent)
  }
}

ModuleA {
  imports: [MatDialog, FilterModule],
  declaration: [CompA]
}

FilterModule {
  declaration: [FilterComponent],
  entryComponent: [FilterComponent]
}

FilterComponent { ...
}

При ленивой маршрутизации mat-dialog может открыть FilterComponent без каких-либо проблем. Но когда я попытался открыть диалоговое окно, успешно загрузив модуль с помощью пользовательских методов, я получил ошибку ниже

Не найдена фабрика компонентов для FilterComponent. Вы добавили его в @ NgModule.entryComponents?

В github также есть одна открытая ошибка, но мне любопытно, как ленивая маршрутизация работает без проблем.

https://github.com/angular/components/issues/16431

1 Ответ

0 голосов
/ 08 июля 2019

Если компонент является частью модуля и вы хотите использовать этот компонент в другом модуле,

затем поместите компонент в экспорт, а не в компонент ввода.

FilterModule {
  declaration: [FilterComponent],
  exports: [FilterComponent]
}

Теперь этот компонент становится доступным и для других компонентов, когда вы импортируете этот модуль в любой другой модуль.

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