Javascript 尽管在我的模块的entryComponents选项中声明了组件工厂,但我仍然无法找到该组件工厂?
我想在中显示组件,但如何动态创建它 我试图在Javascript 尽管在我的模块的entryComponents选项中声明了组件工厂,但我仍然无法找到该组件工厂?,javascript,angular,typescript,dependency-injection,Javascript,Angular,Typescript,Dependency Injection,我想在中显示组件,但如何动态创建它 我试图在RegMktRiskHomeModule的entryComponents选项中声明该组件,但它也不起作用。目前我找到的唯一方法是在AppModule中声明ScenariosGraphComponent,就像我在RegMktRiskCommonModule中那样 这可能与RegMktRiskHomeModule在HomeModule中导入以及该HomeModule由应用程序延迟加载有关吗 以下是我的代码(大致): reg mkt risk common.
RegMktRiskHomeModule
的entryComponents
选项中声明该组件,但它也不起作用。目前我找到的唯一方法是在AppModule
中声明ScenariosGraphComponent
,就像我在RegMktRiskCommonModule
中那样
这可能与RegMktRiskHomeModule
在HomeModule
中导入以及该HomeModule
由应用程序延迟加载有关吗
以下是我的代码(大致):
reg mkt risk common.module.ts
:
@NgModule({
declarations: [
ScenariosGraphComponent
],
entryComponents: [
ScenariosGraphComponent
],
exports: [
ScenariosGraphComponent
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class RegMktRiskCommonModule { }
@NgModule({
declarations: [
RegulatoryMarketRiskHomeComponent,
OverviewGridComponent // <-- component who actually show ScenariosGraphComponent in a modal
],
exports: [
RegulatoryMarketRiskHomeComponent
],
imports: [
// ...,
RegMktRiskCommonModule
],
providers: [
// ...
]
})
export class RegMktRiskHomeModule { }
reg mkt risk home.module.ts
:
@NgModule({
declarations: [
ScenariosGraphComponent
],
entryComponents: [
ScenariosGraphComponent
],
exports: [
ScenariosGraphComponent
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class RegMktRiskCommonModule { }
@NgModule({
declarations: [
RegulatoryMarketRiskHomeComponent,
OverviewGridComponent // <-- component who actually show ScenariosGraphComponent in a modal
],
exports: [
RegulatoryMarketRiskHomeComponent
],
imports: [
// ...,
RegMktRiskCommonModule
],
providers: [
// ...
]
})
export class RegMktRiskHomeModule { }
您需要像这样更改代码
@NgModule({
declarations: [
RegulatoryMarketRiskHomeComponent,
OverviewGridComponent,
ScenariosGraphComponent
],
entryComponents: [
ScenariosGraphComponent
],
exports: [
RegulatoryMarketRiskHomeComponent
],
imports: [
// ...,
RegMktRiskCommonModule
],
providers: [
// ...
]
})
export class RegMktRiskHomeModule { }
因此,您可以删除RegMktRiskCommonModule中的ScenariosGraphComponent可能您忘记在打开对话框的组件的模块中导入MatDialogModule。Angular在这种情况下产生的错误可能会产生误导。如果您的模块是延迟加载的,并且需要在延迟加载的模块之间共享服务,因此,请创建一个共享模块,并在其中添加公共组件和服务,然后在app module中导入共享模块如果我没有弄错的话,entryComponent必须列在应该使用它的模块中。在您的情况下,它必须列在主页模块中,但不(必须)列在定义它的公共模块中。@Scorpio590您的意思是像Tony的回答一样?我已经试过了,但也不起作用:-(我编辑了我的问题,我的pb是否与
regmktriskomomodule
在延迟加载的HomeModule
中导入有关。我已经尝试过了,但也不起作用。我仍然有相同的错误。顺便说一句,我创建模块RegMktRiskCommonModule
的原因是ScenariosGraphCompOneNet将在我的应用程序(可能还有其他组件)的不同功能中使用。我编辑了我的问题,我的pb是否与RegMktRiskHomeModule
导入延迟加载的HomeModule
有关。