gpt4 book ai didi

Ionic3:是否需要在app.module.ts中声明pages和pages modules

转载 作者:行者123 更新时间:2023-12-01 13:25:05 24 4
gpt4 key购买 nike

我曾经在 app.module.ts 中声明我的 ionic 应用程序的页面和页面模块。
然而,我只是删除了所有这些声明,应用程序仍然完全正常运行(在浏览器中测试,而不是在移动设备中测试)。
所以我想知道这些声明是否必要。

根据 this post's answer不需要在app.module.ts中声明页面,但没有提到页面模块。

我的 app.module.ts 是这样工作的:

import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';

import { MyApp } from './app.component';

import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';

import { HttpModule } from '@angular/http';

// imports
import { PageModule_view_raw } from '../pages/page1/page1.module';
import { PageModule_view_raw } from '../pages/page2/page2.module';
import { PageModule_view_raw } from '../pages/page3/page3.module';
import { Page1 } from '../pages/page1/page1';
import { Page2 } from '../pages/page2/page2';
import { Page3 } from '../pages/page3/page3';

import { SomeProvider } from '../providers/someprovider';
import { ComponentsModule } from '../components/components.module';


@NgModule({
declarations: [
MyApp,
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
HttpModule,
// pages modules
PageModule1,
PageModule2,
PageModule3,
// components
ComponentsModule,
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
// pages
Page1,
Page2,
Page3,
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
// providers
SomeProvider
]
})
export class AppModule {}

但它也可以这样工作:

import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';

import { MyApp } from './app.component';

import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';

import { HttpModule } from '@angular/http';

// imports
import { SomeProvider } from '../providers/someprovider';
import { ComponentsModule } from '../components/components.module';


@NgModule({
declarations: [
MyApp,
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
HttpModule,
// components
ComponentsModule,
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
// providers
SomeProvider
]
})
export class AppModule {}

另一方面,如果我不声明 ComponentsModule,它就不会工作。
页面模块是否自动获取?宣布它们有什么意义吗?

最佳答案

您不必在应用程序模块中导入页面模块...如果你用过

IonicPageModule.forChild(PageName) 

在您的页面模块中,它将被引导以进行导航。

Here是它的样子:

export class IonicPageModule {

static forChild(page: any): ModuleWithProviders {
return {
ngModule: IonicPageModule,
providers: [
{ provide: <any>LAZY_LOADED_TOKEN, useValue: page },
{ provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: page, multi: true },
]
};
}

}

IonicPageModule is an NgModule that bootstraps a child IonicPage in order to set up routing.

另一方面,如果我不声明 ComponentsModule,它就不会工作。

这是因为 ComponentsModule 将包含未设置为延迟加载页面的角度组件。您需要通过导入 ComponentsModule 来确保您的应用包含这些组件。

关于Ionic3:是否需要在app.module.ts中声明pages和pages modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48596284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com