1. ホーム
  2. angular

declarationsとentryComponentsの違いは何ですか?

2023-10-16 02:57:39

質問

app.module.tsにこんなのがあります。

import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { HttpModule, Http } from '@angular/http';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { EliteApi } from '../shared/shared';
import { MyApp } from './app.component';
import { MyTeams, Tournaments, TeamDetails, Teams, TeamHome, Standings } from '../pages/pages';

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

@NgModule({
    declarations: [
        MyApp,
        MyTeams,
        TeamDetails,
        Tournaments,
        Teams,
        TeamHome,
        Standings
    ],
    imports: [
        BrowserModule,
        IonicModule.forRoot(MyApp),
        HttpModule
    ],
    bootstrap: [IonicApp],
    entryComponents: [
        MyApp,
        MyTeams,
        TeamDetails,
        Tournaments,
        Teams,
        TeamHome,
        Standings
    ],
    providers: [
        HttpModule,
        StatusBar,
        SplashScreen,
        { provide: ErrorHandler, useClass: IonicErrorHandler },        
        EliteApi
    ]
})
export class AppModule { }

現時点では、私の declarationsentryComponents はどちらも全く同じものです。これらは、私のアプリのために構築したすべてのページ/コンポーネントを含んでいます。もし、いずれかのプロパティからエントリを削除すると、angular2 でエラーが発生します。

私の質問は、それらが常に同じである場合、これらのプロパティの必要性は何ですか?私はここで間違いなくいくつかのポイントを逃していると思います。entryComponentsとdeclaractionsはいつ互いに異なるのでしょうか?

どのように解決するのですか?

この entryComponents 配列は のみ コンポーネントを定義します。 ComponentFactoryResolver . Angularはそれらを見つけてコンパイルするためにこのヒントを必要とします。その他のコンポーネントは、単に宣言配列にリストアップされるべきです。

Angularのサイトにあるドキュメントです。