Angular 基于条件的角度加载模块及其组件

Angular 基于条件的角度加载模块及其组件,angular,angular-module,Angular,Angular Module,我是angular方面的新手,我想知道是否有可能根据app.module上的条件加载模块及其组件,或者在哪里进行加载是最好的 基本上我想做一些事情,比如: if(user.deparment === 'coms') { //Use the communications.module and its components } 我附上了一些图片,你们可以看到应用程序的结构。如果需要,我可以添加代码而不是图片 App.module图片 通信模块图片 模块在应用程序开始时加载。您需要导入组件,并

我是angular方面的新手,我想知道是否有可能根据app.module上的条件加载模块及其组件,或者在哪里进行加载是最好的

基本上我想做一些事情,比如:

if(user.deparment === 'coms') {
  //Use the communications.module and its components
}
我附上了一些图片,你们可以看到应用程序的结构。如果需要,我可以添加代码而不是图片

App.module图片

通信模块图片
模块在应用程序开始时加载。您需要导入组件,并使用所需的任何组件。您需要将组件注册到模块,以便可以访问组件

您可以执行简单的三元检查来有条件地导入模块。像这样:

import { NgModule, Optional } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppComponent } from './app.component';

@NgModule({}) class MyModule {}

// toggle and watch the console
const production = true;

@NgModule({
  imports:      [ BrowserModule, production ? MyModule : []],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule {
  constructor(@Optional() module: MyModule) {
    console.log(module);
  }
}

所以基本上没有办法决定从应用程序开始时不加载什么?因此,所有内容都将加载,然后有条件地,我将在加载到应用程序后决定使用什么和不使用什么..因为angular是aotYes,如果您想使用组件,您应该始终在模块中声明它,因为angular需要它进行编译。您可以选择导入,如@Tomasz belowGlad所示,我可以帮助:)问题,如果我基于user.deparment这样的动态值进行导入,这仍然有效吗?一些用户可能是不同部门的一部分,因此我不能有一个常数,并且只有当用户加载应用程序时,我才知道该部门的值。这种方法仅适用于静态值。如果您想配置提供者,您可以使用
forRoot
静态方法,您可能也会感兴趣,我将对此进行研究!非常感谢。