angular - MaterialModule 在某些模块中不起作用:'mat-card' 不是已知元素
问题描述
我发现了类似的问题,但似乎都不是我遇到的问题。
目前我的应用程序使用延迟加载的 postModule,而其他模块正常加载。它们都使用 Angular Material,我已将其添加到 materialModule 中。我的 materialModule 的使用适用于我的 postModule 组件,但它不适用于我的 aboutModule(可能还有其他模块)。
对于代码量,我深表歉意。我对 Angular 很陌生,我不确定从哪里开始寻找这个问题。
关于模块
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MaterialModule } from '../material/material.module';
import { AboutComponent } from './about/about.component';
@NgModule({
declarations: [AboutComponent],
imports: [
CommonModule,
MaterialModule
]
})
export class AboutModule { }
材料模块
import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import {
MatListModule,
MatCardModule,
MatIconModule,
MatMenuModule,
MatButtonModule,
MatToolbarModule,
MatSidenavModule,
MatTableModule,
MatFormFieldModule,
MatInputModule,
MatProgressSpinnerModule
} from "@angular/material";
import { FlexLayoutModule } from "@angular/flex-layout";
@NgModule({
declarations: [],
imports: [
CommonModule,
MatListModule,
//other Mat imports
],
exports: [
MatListModule,
//Rest of the imports
]
})
export class MaterialModule {}
应用程序模块
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule } from '@angular/common/http';
import { ReactiveFormsModule } from '@angular/forms';
import { LayoutModule } from '@angular/cdk/layout';
import { MaterialModule } from './material/material.module';
import { AppRoutingModule } from './app-routing.module';
import { httpInterceptorProviders } from './http-interceptors';
import { MainNavComponent } from './main-nav/main-nav.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found/page-not-found.component';
@NgModule({
declarations: [AppComponent, MainNavComponent],
imports: [
BrowserModule,
BrowserAnimationsModule,
HttpClientModule,
ReactiveFormsModule,
LayoutModule,
MaterialModule,
AppRoutingModule
],
providers: [httpInterceptorProviders],
bootstrap: [AppComponent]
})
export class AppModule {}
应用程序路由模块
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { SelectivePreloadStrategy } from './selective-preload-strategy';
import { AuthGuard } from './user/auth.guard';
import { AboutComponent } from './about/about/about.component';
import { MapComponent } from './map/map/map.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found/page-not-found.component';
import { NewsComponent } from './news/news/news.component';
const appRoutes: Routes = [
{
path: 'post',
canActivate: [AuthGuard],
loadChildren: './post/post.module#PostModule',
data: { preload: true }
},
{path: '', redirectTo: 'post/list', pathMatch: 'full'},
{path: 'about', component: AboutComponent},
{path: 'news', component: NewsComponent},
{path: 'map', component: MapComponent},
{path: '**', component: PageNotFoundComponent}
];
@NgModule({
imports: [
RouterModule.forRoot(appRoutes,
{preloadingStrategy: SelectivePreloadStrategy}),
],
declarations: [
AboutComponent,
NewsComponent,
MapComponent,
PageNotFoundComponent
],
exports: [
RouterModule
]
})
export class AppRoutingModule { }
解决方案
您没有加载“aboutModule”,您只是在导入组件。我建议您为“aboutModule”创建一个路由模块,该模块将处理其子模块,然后像您在帖子中所做的那样加载您的路由模块。
推荐阅读
- python - 一行中的多个正则表达式
- javascript - 了解 reduce() 行为
- visual-studio - Release 编译需要 mfc140ud.dll 和 vcruntime140d.dll
- reactjs - 在孩子的 useEffect 中访问 EventListener 调用的函数内的父状态
- oauth-2.0 - 如何安全地将 Open ID Connect 令牌转换为 Cookie
- logic - 当且仅当 Not(NOT P) 涉及双“非”P 的命题逻辑
- javascript - 我正在尝试创建一个列表,但它不会创建超过 1 个列表
- azure - 设置 azureSubscriptionEndpoint
- reactjs - 在 useEffect 依赖项中缺少 ref 时没有 eslint 警告
- python-3.x - 如何在模拟中检查修改其参数的函数的调用参数,例如random.shuffle?