angular - 我在 Angular 9 中安装了 Material Design,为什么我不能显示元素?
问题描述
我有一个现有的 Angular 9 项目,我正在尝试将材料库添加到其中。但是,我似乎无法显示任何元素并不断收到此错误
core.js:14613 'mat-icon' is not a known element:
1. If 'mat-icon' is an Angular component, then verify that it is part of this module.
2. If 'mat-icon' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.
我想知道我可能会错过什么!我已经尝试更改我的依赖项的版本,并导入所有模块,但如果有任何帮助,我将不胜感激!
这是我的 app.module
import { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { AppConfigService } from './services/app-config.service';
import { AppInitializer } from './services/app-initializer.service';
import { BrowserModule } from '@angular/platform-browser';
import { DeviceModule } from './device/device.module';
import { FormsModule, ReactiveFormsModule, FormBuilder } from '@angular/forms';
import { GatewayModule } from './gateway/gateway.module';
import { HashLocationStrategy, LocationStrategy } from '@angular/common';
import { HttpClientModule } from '@angular/common/http';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { LogoModule } from './logo/logo.module';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MatButtonModule } from '@angular/material/button';
import { MatProgressSpinnerModule, MatProgressSpinner } from '@angular/material/progress-spinner';
import { MatIconModule } from '@angular/material/icon';
import { MatFormFieldModule } from '@angular/material/form-field';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
CommonModule,
MatButtonModule,
MatProgressSpinnerModule,
MatFormFieldModule,
DeviceModule,
GatewayModule,
FormsModule,
HttpClientModule,
LogoModule,
BrowserAnimationsModule,
FormsModule,
ReactiveFormsModule,
MatIconModule,
RouterModule.forRoot([]),
],
exports: [
],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ],
providers: [
AppConfigService,
{
provide: APP_INITIALIZER,
useFactory: AppInitializer,
multi: true,
deps: [AppConfigService]
},
{
provide: LocationStrategy,
useClass: HashLocationStrategy
},
FormBuilder,
FormsModule,
],
bootstrap: [AppComponent]
})
export class AppModule { }
这是我的 package.json 的依赖项
"@angular/animations": "^9.1.0",
"@angular/cdk": "^9.2.0",
"@angular/common": "^9.1.0",
"@angular/compiler": "^9.1.0",
"@angular/core": "^9.1.0",
"@angular/forms": "^9.1.0",
"@angular/material": "^9.2.0",
"@angular/material-moment-adapter": "^9.2.0",
"@angular/platform-browser": "^9.1.0",
"@angular/platform-browser-dynamic": "^9.1.0",
"@angular/router": "^9.1.0",
"core-js": "^2.6.11",
"moment": "^2.24.0",
"rxjs": "^6.5.4",
"tslib": "^1.11.1",
"zone.js": "^0.10.3",
"bootstrap": "^3.4.1",
"font-awesome": "^4.7.0",
"jquery": "^3.4.1",
},
解决方案
在 Angular 9 及以上版本中
您应该导入MatIconModule
到您的 app.module.ts 文件中。你MatIconModule
在 app.module.ts 中丢失了
import { MatIconModule } from '@angular/material/icon'
并在您的 app.module.ts 导入数组中像这样使用它:
import { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { AppConfigService } from './services/app-config.service';
import { AppInitializer } from './services/app-initializer.service';
import { BrowserModule } from '@angular/platform-browser';
import { DeviceModule } from './device/device.module';
import { FormsModule, ReactiveFormsModule, FormBuilder } from '@angular/forms';
import { GatewayModule } from './gateway/gateway.module';
import { HashLocationStrategy, LocationStrategy } from '@angular/common';
import { HttpClientModule } from '@angular/common/http';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { LogoModule } from './logo/logo.module';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MatButtonModule } from '@angular/material/button';
import { MatProgressSpinnerModule, MatProgressSpinner } from '@angular/material/progress-spinner';
import { MatIconModule } from '@angular/material/icon';
import { MatFormFieldModule } from '@angular/material/form-field';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
CommonModule,
MatIconModule, // <-- Include it here
MatButtonModule,
MatProgressSpinnerModule,
MatFormFieldModule,
DeviceModule,
GatewayModule,
FormsModule,
HttpClientModule,
LogoModule,
BrowserAnimationsModule,
FormsModule,
ReactiveFormsModule,
MatIconModule,
RouterModule.forRoot([]),
],
exports: [
],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ],
providers: [
AppConfigService,
{
provide: APP_INITIALIZER,
useFactory: AppInitializer,
multi: true,
deps: [AppConfigService]
},
{
provide: LocationStrategy,
useClass: HashLocationStrategy
},
FormBuilder,
FormsModule,
],
bootstrap: [AppComponent]
})
export class AppModule { }
推荐阅读
- javascript - react-router-dom 开关需要额外的 div 包装器
- macos - 我正在尝试清理 OSX 10.13 中的 usr/local 文件夹
- java - java.lang.SecurityManager 中的初始化字段是做什么用的?
- wordpress - 子主题显示空白页
- batch-file - 批处理脚本回显动态变量
- android-asynctask - 作业调度程序不会在 android 的给定时间上重复其工作
- haskell - Haskell:翻转功能的目的?
- quantum-computing - 在 Q# 中循环遍历数组
- powerbi - Power BI:将重复表转换为参考表
- ruby-on-rails - 在 select 语句中有 3 个或更多列用于选择表不起作用