创建材料模块并将其导入到app.module后,角材料主题未应用在子模块中

时间:2019-03-13 15:00:20

标签: angular angular-material angular7 angular-module

正如许多其他教程中所建议的那样,我决定将我的app.module从特定的有角度的材质模块中整理出来,并创建了一个单独的模块,称为“ material module”-然后我将该模块直接导入到app.module的导入数组。

现在,如果我在app.component.html中有一个材质按钮,那么一切都很好,并且应用了主题。

但是,我有一个通过来显示的Auth模块,并且该模块中没有应用任何角度主题,它们都是基本的html元素。

我确定我确实缺少一些有关模块应该如何以角度工作的明显信息,但是在通过Google搜索和文档阅读了很多线程以及一些论坛之后,我不知道这是什么我不见了。

2 个答案:

答案 0 :(得分:1)

这里的问题不是主题,而是AuthModule不知道如何解决实质性问题。

在Angular中,模块充当编译上下文,如果您不将MaterialModule导入到AuthModule中,则材料组件不在上下文中,而angular对它们一无所知。

将您的MaterialModule导入您的AuthModule将解决此问题,例如:

material.module.ts:

@NgModule({
  imports: [MatButtonModule, MatListModule],
  exports: [MatButtonModule, MatListModule],
})
export class MaterialModule {}

auth.module.ts

@NgModule({
  imports: [CommonModule, MaterialModule],
  providers: ...,
})
export class MaterialModule {}

请注意

  • MaterialModule出口MatButtonModule
  • AuthModule导入MaterialModule 因此,AuthModule可以访问MatButtonModule
  • 中定义的组件。

有关此的更多信息,请参见angular文档 https://angular.io/guide/sharing-ngmodules

答案 1 :(得分:-2)

  1. 您可以在angular.json文件中检查以下行:

    "styles": [
              {
                "input": "node_modules/@angular/material/prebuilt-themes/indigo-pink.css"
              },
    
  2. 您可以在项目文件夹中执行,以使用正确的依赖项自动更新Angular项目。

    ng add @angular/material