material 元素未在延迟加载中加载
material elements are not loading in lazy loading
我是 angular 模块和延迟加载的新手。我尝试使用 angular material.
构建延迟加载应用程序
延迟加载对我有用。但是子组件中的 material 元素没有加载
我得到 'mat-tab' is not a known element:
但我在 AppModule 中添加了 MatTabModule,如下所示
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HomeComponent } from './home/home/home.component';
import { MaterialModule } from './module/material/material.module';
import { MatTabsModule } from '@angular/material/tabs';
@NgModule({
declarations: [
AppComponent,
HomeComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule,
MatTabsModule
],
providers: [],
exports:[MaterialModule],
bootstrap: [AppComponent]
})
export class AppModule { }
我的惰性模块如下
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LazyRoutingModule } from './lazy-routing.module';
import { LazyComponent } from 'src/app/lazy/lazy/lazy.component';
@NgModule({
declarations: [LazyComponent],
imports: [
CommonModule,
LazyRoutingModule
]
})
export class LazyModule { }
这个 mat 选项卡在 HomeComponent 上工作,在 lazyComponent 上不工作。
我尝试使用 Stack Blitz,它工作正常,下面是 StackBlitz url
https://stackblitz.com/edit/angular-ivy-rpqusl
请让我知道我在这里缺少什么?
简单的方法
相反,不要在 app.module.ts 中导入,您需要将其导入到您想要的模块中,如下所示:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatTabsModule } from '@angular/material/tabs';
import { LazyRoutingModule } from './lazy-routing.module';
import { LazyComponent } from 'src/app/lazy/lazy/lazy.component';
@NgModule({
declarations: [LazyComponent],
imports: [
CommonModule,
LazyRoutingModule,
MatTabsModule,
]
})
export class LazyModule { }
另一种方法
如果你想将一些模块分组以在你的组件中共享,你可以创建一个 SharedModule:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatTabsModule } from '@angular/material/tabs';
@NgModule({
declarations: [],
imports: [
CommonModule,
MatTabsModule,
~modules that you want to share~
],
exports: [
MatTabsModule,
~modules that you want to share~
]
})
export class SharedModule { }
现在您可以在 LazyModule 中导入:
@NgModule({
declarations: [LazyComponent],
imports: [
CommonModule,
LazyRoutingModule,
SharedModule,
]
})
export class LazyModule { }
我是 angular 模块和延迟加载的新手。我尝试使用 angular material.
构建延迟加载应用程序延迟加载对我有用。但是子组件中的 material 元素没有加载
我得到 'mat-tab' is not a known element:
但我在 AppModule 中添加了 MatTabModule,如下所示
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { HomeComponent } from './home/home/home.component';
import { MaterialModule } from './module/material/material.module';
import { MatTabsModule } from '@angular/material/tabs';
@NgModule({
declarations: [
AppComponent,
HomeComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule,
MatTabsModule
],
providers: [],
exports:[MaterialModule],
bootstrap: [AppComponent]
})
export class AppModule { }
我的惰性模块如下
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LazyRoutingModule } from './lazy-routing.module';
import { LazyComponent } from 'src/app/lazy/lazy/lazy.component';
@NgModule({
declarations: [LazyComponent],
imports: [
CommonModule,
LazyRoutingModule
]
})
export class LazyModule { }
这个 mat 选项卡在 HomeComponent 上工作,在 lazyComponent 上不工作。
我尝试使用 Stack Blitz,它工作正常,下面是 StackBlitz url
https://stackblitz.com/edit/angular-ivy-rpqusl
请让我知道我在这里缺少什么?
简单的方法
相反,不要在 app.module.ts 中导入,您需要将其导入到您想要的模块中,如下所示:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatTabsModule } from '@angular/material/tabs';
import { LazyRoutingModule } from './lazy-routing.module';
import { LazyComponent } from 'src/app/lazy/lazy/lazy.component';
@NgModule({
declarations: [LazyComponent],
imports: [
CommonModule,
LazyRoutingModule,
MatTabsModule,
]
})
export class LazyModule { }
另一种方法
如果你想将一些模块分组以在你的组件中共享,你可以创建一个 SharedModule:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatTabsModule } from '@angular/material/tabs';
@NgModule({
declarations: [],
imports: [
CommonModule,
MatTabsModule,
~modules that you want to share~
],
exports: [
MatTabsModule,
~modules that you want to share~
]
})
export class SharedModule { }
现在您可以在 LazyModule 中导入:
@NgModule({
declarations: [LazyComponent],
imports: [
CommonModule,
LazyRoutingModule,
SharedModule,
]
})
export class LazyModule { }