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
有关。