You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 9类库添加MatButton编译报错的问题求助

问题根源与解决方案

嘿,我一眼就发现问题所在啦!你遇到的NG6002和NG6003错误,核心原因是你把单个组件类MatButton直接加到了NgModule的imports数组里,但Angular的imports数组只接受NgModule类型的对象,不能放组件、指令或管道类。

正确的修复步骤

Angular Material的所有组件都是通过专属模块来提供的,MatButton对应的模块是MatButtonModule,你只需要做这两处修改:

  1. 替换导入语句
    把原来的组件导入改成模块导入:
// 替换前
import { MatButton } from '@angular/material/button';

// 替换后
import { MatButtonModule } from '@angular/material/button';
  1. 更新NgModule的imports数组
    在MultiSelectModule的imports里用MatButtonModule代替MatButton:
import { NgModule } from '@angular/core';
import { MultiSelectComponent } from './multi-select.component';
import { MatButtonModule } from '@angular/material/button';
import { FormsModule } from '@angular/forms';
import { SearchPipe } from './search.pipe';

@NgModule({
  declarations: [MultiSelectComponent, SearchPipe],
  imports: [ MatButtonModule, FormsModule ],
  exports: []
})
export class MultiSelectModule { }
  1. 可选优化:如果需要让类库使用者直接用MatButton
    如果你的类库使用者希望不用自己再导入MatButtonModule就能使用MatButton,可以把MatButtonModule加到exports数组里:
exports: [MatButtonModule]

补充提醒

Angular Material的每个组件都遵循“一个组件对应一个模块”的规则,比如MatInput对应MatInputModule、MatDialog对应MatDialogModule,以后引入其他Material组件时,记得都要导入对应的模块,而不是组件类本身哦!

内容的提问来源于stack exchange,提问作者Dilshan Liyanage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 16:17:41