我有一个Angular应用程序。在我的app.module.ts
声明中,我会这样做:
App.module (我的根模块):
let imports = [
//....
];
if (!environment.production) {
imports.push(DevToolsModule);
}
@NgModule({
imports: imports,
...
})
DevToolsModule (我的功能模块):
我的独立功能模块DevToolsModule
如下所示:
@NgModule({
declarations: [DeveloperToolsComponent],
imports: [
CommonModule
],
entryComponents: [DeveloperToolsComponent]
})
export class DevToolsModule {}
我现在要做的是:
当我的DevToolsModule
被导入时,我想在我的屏幕上显示一个包含一些开发人员信息的组件。它应该是自动添加的,我不想在我的app.html
模板中定义它。
有没有人做到了这样的事情?
非常感谢,塞巴斯蒂安
发布于 2020-05-19 10:27:24
您可以执行以下操作:
let developmentModules = [
DevToolsModule
]
if(environment.production) {
developmentModules = [];
enableProdMode();
}
@NgModule({
imports: [
BrowserModule,
...developmentModules
],
declarations: [],
providers: [],
})
export class AppModule
扩展运算符...
允许轻松地将一个数组的扩展版本放入另一个数组中。
发布于 2020-05-19 10:59:03
当您在根模块中导入您的功能模块时,它会自动添加到树中。您不需要为此编辑app.component.html模板,但为了演示,您应该这样做。如果不能编辑app.component.html模板,可以在app.component.ts中动态添加功能模块组件,如@viewchild实例和ComponentFactoryResolver,但我不推荐这样做。相反,您应该将功能模块组件定义为解密,然后在模板中使用它
<child-component></child-component>
无论如何,如果你仍然觉得这很愚蠢,你可以看看这篇文章:Dynamically add components to the DOM with Angular
发布于 2020-05-20 08:24:08
从理论上想一想:
constructor(@Optional() devToolsModule:DevToolsModule ) {
if(devToolsModule){
//add component to view
}
}
https://stackoverflow.com/questions/61887853
复制相似问题