По какой-то уважительной причине я пытаюсь удалить маршрутизацию (в данном случае ее ленивую) из моего приложения 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