36

これが私のAngular2アプリの構造です:

ここに画像の説明を入力

これが私のコードの一部です。以下は、ルーティング ルールと子モジュール ( ) をインポートし、いくつかのページに関連するいくつかのコンポーネントを使用moduleする Angular2 アプリのメインです。EdgeModule

app.module.ts

@NgModule({
    declarations: [
        AppComponent,
        PageNotFoundComponent,
        LoginComponent
    ],
    imports: [
        ...
        appRouting,
        EdgeModule
    ],
    providers: [
        appRoutingProviders,
        LoginService
    ],
    bootstrap: [AppComponent]
})

export class AppModule {
}

メイン モジュールのルーティング ルールは次のとおりです。ログインページへのパスがあり、ページが見つかりません。

app.routing.ts

const appRoutes: Routes = [
    { path: 'login', component: LoginComponent },
    { path: '**', component: PageNotFoundComponent }
];

export const appRoutingProviders: any[] = [];

export const appRouting = RouterModule.forRoot(appRoutes, { useHash: true });

EdgeModuleこれは、使用するコンポーネントを宣言し、独自のルーティング規則と 2 つの子モジュール (FirstSectionModuleおよび) をインポートしますSecondSectionModule

edge.module.ts

@NgModule({
    declarations: [
        EdgeComponent,
        SidebarComponent,
        TopbarComponent
    ],
    imports: [
        ...
        edgeRouting,
        FirstSectionModule,
        SecondSectionModule
    ],
    providers: [
        AuthGuard
    ]
})

export class EdgeModule {
}

ご覧のとおり、トップバーとサイドバーのコンポーネントをロードするモジュールのルーティング ルールを次に示します。

edge.routing.ts

Paths['edgePaths'] = {
    firstSection: 'firstSection',
    secondSection: 'secondSection'
};

const appRoutes: Routes = [
    { path: '', component: EdgeComponent,
        canActivate: [AuthGuard],
        children: [
            { path: Paths.edgePaths.firstSection, loadChildren: '../somepath/first-section.module#FirstModule' },
            { path: Paths.edgePaths.secondSection, loadChildren: '../someotherpath/second-section.module#SecondModule' },
            { path: '', redirectTo: edgePaths.dashboard, pathMatch: 'full' }
        ]
    }
];

export const edgeRouting = RouterModule.forChild(appRoutes);

最後に、これは 2 つの子モジュールの 1 つで、コンポーネントを持ち、ルーティング ルールをインポートします。

first-section.module.ts

@NgModule({
    declarations: [
        FirstSectionComponent,
        SomeComponent
    ],
    imports: [
        ...
        firstSectionRouting
    ],
    providers: [
        AuthGuard,
    ]
})

export class FirstSectionModule {
}

これらは、のページ (コンポーネント) のルーティング ルールです。FirstSectionModule

first-section.routing.ts

Paths['firstSectionPaths'] = {
    someSubPage: 'some-sub-page',
    someOtherSubPage: 'some-other-sub-page'
};

const appRoutes: Routes = [
    {
        path: '',
        children: [
            { path: Paths.firstSectionPaths.someSubPage, component: someSubPageComponent},
            { path: Paths.firstSectionPaths.someOtherSubPage, component: someOtherSubPageComponent},
            { path: '', component: AnagraficheComponent }
        ]
    }
];

export const firstSectionRouting = RouterModule.forChild(appRoutes);

second-section.module.tsandファイルについてもほぼ同じことが起こりsecond-section.routing.tsます。

アプリを実行すると、最初に読み込まれるのは に関連するページFirstSectionComponentで、サイドバーもトップバーもありません。

私のコードの何が問題なのか教えていただけますか? コンソールにエラーはありません。

4

4 に答える 4