如何导入其他模块组件可以识别的一次性全局模块

时间:2018-04-03 09:10:14

标签: angular

我正在创建一个细分为不同应用程序的项目。例如,我想使用身份验证应用程序。

首先,让我们定义一次全局模块的含义。作为一个最小的例子,这里有几个列表。

  1. FlexLayoutModule
  2. CustomUIModule
  3. 这些模块必须在项目中声明一次。这是AppModule

    @NgModule({
      declarations: [
        AppComponent,
      ],
      imports: [
        // Dependencies
        BrowserModule,
        BrowserAnimationsModule,
        FlexLayoutModule,
        CustomUIModule,
    
        // Apps
        AuthenticationModule,
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule {}
    

    现在让我告诉你AuthenticationModule。我只有这个模块的登录组件。

    @NgModule({
        declarations: [
            LoginComponent,
        ],
        exports: [
            LoginComponent
        ],
    })
    export class AuthenticationModule { }
    

    我的问题是LoginComponent无法识别FlexLayoutModuleCustomUIModule个模块。但是,如果您将这些模块放在导入选项中,则可以解决此问题。 AuthenticationModule

    但是那个疯狂的人,每当我创建另一个应用程序并执行相同的操作时,我不想这样做,因为这些模块是全局类型且必须声明。谁能有任何解决方案我如何构建我的应用程序?非常感谢。

    更具体地说,我得到this error

    Error: Template parse errors:'mat-[some-material-component]'is not a known element.
    

1 个答案:

答案 0 :(得分:2)

根据指南:https://angular.io/guide/sharing-ngmodules

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { FlexLayoutModule} from './new-item.directive';
import { CustomUIModule } from './orders.pipe';

@NgModule({
 imports:      [  FlexLayoutModule,CustomUIModule, FormsModule, CommonModule  ],
 declarations: [ ],
 exports:      [  FlexLayoutModule,CustomUIModule, FormsModule, CommonModule   ]
})
export class SharedModule { }

通过重新导出FlexLayoutModule,CustomUIModule, FormsModule, CommonModule,导入此SharedModule的任何其他模块都可以访问导出的成员。