角材料菜单模块:找不到名称“ matMenu”的导出

时间:2020-05-15 10:49:18

标签: angular typescript angular-material angular9

我对Angular材质菜单模块有一点疑问。

我的 app.module.ts 中有以下代码:

import { SharedModule } from './shared/shared.module';

@NgModule({
  declarations: [
    // ...
  ],
  imports: [
    SharedModule,
  ],
})
export class AppModule { }

在我的 shared.module.ts 中:

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { MatMenuModule } from '@angular/material/menu';
import { ListDropdownComponent } from './list-dropdown/list-dropdown.component';

@NgModule({
  declarations: [
    ListDropdownComponent,
  ],
  imports: [
    MatMenuModule,
  ],
  exports: [
    ListDropdownComponent,
  ],
})
export class SharedModule { }

在我的 list-dropdown.component.ts 中:

import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';

@Component({
  selector: 'app-list-dropdown',
  templateUrl: './list-dropdown.component.html',
  styleUrls: ['./list-dropdown.component.scss']
})
export class ListDropdownComponent implements OnInit {

  constructor() { }

  ngOnInit(): void {
  }
}

list-dropdown.component.html 中:

<button mat-icon-button [matMenuTriggerFor]="menu">
  My dropdown menu
</button>
<mat-menu #menu="matMenu">
  <!-- ... -->
</mat-menu>

然后我收到此错误消息:

Error: Export of name 'matMenu' not found!

我看不出问题出在哪里吗?

4 个答案:

答案 0 :(得分:16)

我遇到了同样的问题,服务器重启后解决了该问题。

答案 1 :(得分:5)

我在单元测试中遇到了同样的问题。通过在测试包中添加 MatMenuModule 模块解决:

  beforeEach(async () => {
    await TestBed.configureTestingModule({
      imports: [MatMenuModule],
      declarations: [YOURCOMPONENT],
    }).compileComponents();
  });

答案 2 :(得分:3)

我遇到了同样的问题- 关闭您的终端并再次启动服务器(ng serve)。

答案 3 :(得分:1)

我今天遇到了这个问题,你需要做的就是在你使用 matMenu 的当前组件的模块中导入下面这一行 import { MatMenuModule } from '@angular/material/menu';