在Sidenav菜单上导入惰性组件

时间:2018-11-07 18:03:06

标签: angular ionic3

我的应用程序正在使用延迟加载,但是在默认情况下仍需要使用app.module加载了组件,但是默认情况下仍需要它们,但是大多数都加载到了不同的页面/组件上。

这是side-menu.html

<ion-content>
  <ion-list>
    <ion-item>
      <login></login>
    </ion-item>
    <ion-item>
      <language-change></language-change>
    </ion-item>
  </ion-list>
</ion-content>

login是默认加载的,因为用户将必须始终登录,因此该组件可以在侧面菜单上工作。

language-change仅在需要时加载,并且可以在其他页面上使用,但不能在此处使用。这是side-menu.module

import { NgModule } from "@angular/core";
import { IonicPageModule } from "ionic-angular";
import { SideMenuPage } from "./side-menu";
import { LanguageChangeComponentModule } from "../../components/language-change/language-change.module";

@NgModule({
    declarations: [SideMenuPage],
    imports: [
        IonicPageModule.forChild(SideMenuPage),
        LanguageChangeComponentModule
    ],
    exports: [SideMenuPage],
    entryComponents: [SideMenuPage]
})
export class SideMenuPageModule { }

language-change.module

import { NgModule } from '@angular/core';
import { IonicModule } from 'ionic-angular';
import { LanguageChangeComponent } from './language-change';

@NgModule({
    declarations: [LanguageChangeComponent],
    imports: [
        IonicModule
    ],
    exports: [LanguageChangeComponent],
    entryComponents: [LanguageChangeComponent]
})
export class LanguageChangeComponentModule { }

side-menu.module

import { NgModule } from "@angular/core";
import { IonicPageModule } from "ionic-angular";
import { SideMenuPage } from "./side-menu";
import { LanguageChangeComponentModule } from "../../components/language-change/language-change.module";

@NgModule({
    declarations: [SideMenuPage],
    imports: [
        IonicPageModule.forChild(SideMenuPage),
        LanguageChangeComponentModule
    ],
    exports: [SideMenuPage],
    entryComponents: [SideMenuPage]
})
export class SideMenuPageModule { }

我经典了

  

“语言更改”不是已知元素

1 个答案:

答案 0 :(得分:1)

假设您的language-change组件名称为LanguageChangeComponent

检查是否要从LanguageChangeComponent声明并导出LanguageChangeComponentModule

@NgModule({
   //....
   declarations : [LanguageChangeComponent],
   exports :  [LanguageChangeComponent]
   //...
 })
class LanguageChangeComponentModule{

}

如果要在整个应用程序中使用此组件,可以将importexport LanguageChangeComponentModule放入AppModule

@NgModule({
    imports: [
        LanguageChangeComponentModule
    ],
    exports: [LanguageChangeComponentModule]
})
export class AppModule {}

如果要在特定模块中使用它,则可以将其导入该模块而不是AppModule。