正确排除角度模块

时间:2019-08-01 07:17:41

标签: angular angular-module

我有一个角度应用程序,其中一些功能被导出到单独的模块。这是因为我的客户可以选择他们想要或不想要的功能。例如如果其中一个客户端不需要聊天功能,那么我只需从ChatModule中删除app.module.ts。一切正常,除了ChatModule有一个ChatComponent,它包含在根app.component.html中,因此,如果我只从ChatModule中删除app.module.ts导入, <chat></chat>标签保留在app.component.html中。在不从模板中删除标签的情况下,打开/关闭此类模块的最佳方法是什么?

app.module.ts

...
@NgModule({
    imports: [
       // ChatModule - module that I doesn't want to include
    ],
    declarations: [

    ],
    providers: [

    ],
})

app.component.html

<app-content>
    <chat></chat> // Tag of the ChatComponent
</app-content>

2 个答案:

答案 0 :(得分:0)

最好的方法是:

  1. 首先创建一个单独的模块,称为:SharedModule(或其他)。
  2. 然后将共享组件添加到该模块。 (在您的情况下,ChatComponent
  3. 然后删除ChatModule不会出现任何问题。
  4. 然后在SharedService中创建一个SharedModule,并为ChatModuleIncluded和其他变量创建变量。
  5. 最后显示/隐藏 Chat变量值上的ChatModuleIncluded标签。

答案 1 :(得分:0)

如果确定没有其他问题,可以使用NO_ERRORS_SCHEMA(https://angular.io/api/core/NO_ERRORS_SCHEMA),如下所示。

  

使用此架构,Angular不会抛出错误说明元素   找不到匹配的<Chat></Chat>

@NgModule({
  imports: [
    // modiules
  ],
  declarations: [
    // components and pipes
  ],
  providers: [
    // providers
  ],
  exports: [
    // exports
  ],
  bootstrap: [AppComponent],
  schemas: [NO_ERRORS_SCHEMA]
})