Angular 带功能模块和角6的角材料

Angular 带功能模块和角6的角材料,angular,angular-material,Angular,Angular Material,每当我想使用功能模块时,我都会遇到使用Angular 6的Angular材质的问题。 以下是我的项目结构: app/ |- app.component.ts |- app.component.html |- app.module.ts |- app-routing.module.ts |- homepage/ |- homepage.module.ts |- homepage-routing.module.ts |- pages/ |- homepage.component.

每当我想使用功能模块时,我都会遇到使用Angular 6的Angular材质的问题。 以下是我的项目结构:

app/
|- app.component.ts
|- app.component.html
|- app.module.ts
|- app-routing.module.ts
|- homepage/
  |- homepage.module.ts
  |- homepage-routing.module.ts
  |- pages/
    |- homepage.component.html
    |- homepage.component.ts
    |- homepage.component.css
|- inbox/
  |- inbox.module.ts
  |- inbox-routing.module.ts
  |- pages/
    |- inbox.component.html
    |- inbox.component.ts
    |- inbox.component.css
收件箱和主页都是延迟加载的。 我试图在
homepage.component.html
inbox.component.html
(我想使用MatButtonModule)中使用棱角材质,但没有成功,官方文档对我没有帮助

以下是我尝试过的:

  • 如果我尝试将MatButtonModule导入到
    homepage.module.ts
    inbox.module.ts
    ,应用程序将因此错误而崩溃
    Uncaught(承诺中):TypeError:无法读取未定义的属性“call”
  • 如果我尝试只将MatButtonModule导入到一个模块中,它将仅适用于绑定到此模块的组件
  • 如果我试图将MatButtonModule直接导入到
    app.module.ts
    中,它根本不会工作

因此,我的问题是,如何将角材质与功能模块一起使用,最佳做法是什么?

您可以创建一个
Material.module.ts
共享模块,用于导出所有角材质模块。然后在两个模块中导入材质模块。该模块可以看起来像

从'@angular/core'导入{NgModule};
从“@angular/material”导入{MatButtonModule};
@NGD模块({
进口:[],
导出:[MatButtonModule]
})
导出类MaterialModule{}

我建议您制作另一个模块,将其命名为MaterialModule,并将其放在应用程序的根目录中,然后导出您希望在应用程序中使用的所有材料模块,即MatButtonModule,如下所示

import { NgModule } from '@angular/core';
import { MatButtonModule } from '@angular/material';

@NgModule({
  imports: [],
  exports: [
    MatButtonModule,
  ],
  declarations: []
})
export class MaterialModule { }
然后将材料模块导入两个模块(inbox.module.ts和homepage.module.ts)

如果此解决方案不起作用,请将Your'r代码添加到中,以便我可以准确检查Your'r代码的问题所在


好运

导出:[MatButtonModule]就足够了,无需导入MatButtonModule副本。还包含不必要的导入。不必要的代码已删除,且不重复。这是您完成的您的answare。嗨,我知道现在已经晚了,但是,在每个功能模块上加载MaterialModule(性能方面)可以吗?如果在每个模块中导入MaterialModule,应用程序不会每次加载它,它只加载一次并多次使用它。