我正在使用离子2开发应用程序。该应用程序的主要功能是登录屏幕,然后出现带侧边菜单的仪表板。侧边菜单不在登录屏幕中。我做的。但不知道以下错误会一次又一次地出现。
错误是
模块'AppModule'导入的意外指令'LoginPage'。 请添加@NgModule注释。
我在这里给我的代码..
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { ListPage } from '../pages/list/list';
import { LoginPage } from "./login/login";
import { MenuComponent } from "./menu.component";
@NgModule({
declarations: [
MyApp,
HomePage,
ListPage,
MenuComponent
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
LoginPage
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
ListPage,
MenuComponent
],
providers: [{ provide: ErrorHandler, useClass: IonicErrorHandler }]
})
export class AppModule {}
App.component.ts
import { Component, ViewChild } from '@angular/core';
import { Nav, Platform } from 'ionic-angular';
import { LoginService } from "./login/login.service";
import { LoginPage } from "./login/login";
import { MenuComponent } from "./menu.component";
@Component({
template: '<ion-nav #baseNav></ion-nav>',
})
export class MyApp {
@ViewChild('baseNav') nav: Nav;
constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen, private loginService: LoginService) {
this.initializeApp();
}
ngOnInit() {
const componentStack: Array<{page: Component}> = [{
page: MenuComponent
}];
if (!this.loginService.isLoggedIn) {
componentStack.push({ page: LoginPage });
}
this.nav.insertPages(0, componentStack, { animate: false });
}
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.splashScreen.hide();
});
}
}
我该如何解决这个问题......?我正在使用Angular 4.
答案 0 :(得分:14)
@NgModule({
declarations: [
MyApp,
HomePage,
ListPage,
MenuComponent,
LoginPage // loginPgae will be here not in imports
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
ListPage,
MenuComponent
],
providers: [{ provide: ErrorHandler, useClass: IonicErrorHandler }]
})
答案 1 :(得分:11)
在你的代码中,你写了#34; LoginPage&#34;在@ngModule进口。 相反,将它写在声明和EntryComponents中。
@NgModule({
declarations: [
MyApp,
HomePage,
ListPage,
MenuComponent,
LoginPage //add LoginPage here
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
ListPage,
MenuComponent,
LoginPage //add LoginPage here
],
providers: [{ provide: ErrorHandler, useClass: IonicErrorHandler }]
})
&#13;
您必须在声明中声明您的组件。
答案 2 :(得分:1)
将组件导入模块的方法是将它们添加到声明中。对于所有组件导入,这都是正确的。
声明:[ COMPONENT1, COMPONENT2, ... ],