簡體   English   中英

Angular 4-延遲加載路線不起作用

[英]Angular 4 - Lazy Loading routes doesn't work

我試圖使惰性負載路由工作,但我做不到。 如果您能幫助我,我非常感謝。

我有3個模塊PublicModule,AdminModule和AppModule

這是我期望的(現在使用公共模塊):

... / public =>它應該在public組件內顯示信息

這是routing.module.ts中的mi代碼:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes} from '@angular/router';
import {IndexComponent} from './public/index/index.component';

const appRoutes: Routes = [
{
path: 'test',
component: IndexComponent,
data: { title: 'Index' }
},
{path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule'},
{path: 'public', loadChildren: 'app/public/public.module#PublicModule'}
];

@NgModule({
imports: [
CommonModule,
RouterModule.forRoot(appRoutes)
],
exports: [ RouterModule ],
declarations: []
})
export class RoutingModule { }

這是我在app.module.ts中的代碼

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {MatToolbarModule, MatMenuModule, MatIconModule} from '@angular/material';
import {HttpModule} from '@angular/http';
import { IndexComponent } from './public/index/index.component';
import {RoutingModule} from './routing.module';


@NgModule({
declarations: [
  AppComponent,
  IndexComponent
],
imports: [
  BrowserModule,
  BrowserAnimationsModule,
  MatToolbarModule,
  MatMenuModule,
  MatIconModule,
  HttpModule,
  RoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

最后,我在public.module.ts中的代碼

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PublicComponent } from './public.component';
import {RouterModule, Routes} from '@angular/router';

const appRoutes: Routes = [
{
path: '',
component: PublicComponent
}
]

@NgModule({
imports: [
CommonModule,
RouterModule.forChild(appRoutes)
],
declarations: []
})
export class PublicModule { }

如果我去:

http://127.0.0.1:4200/test =>它有效,它顯示index.component的信息

http://127.0.0.1:4200/public =>它重定向到http://127.0.0.1:4200

我究竟做錯了什么? 它應該顯示“公共作品!” 如我所料

附加信息:如果我在公共模塊中注釋了這行RouterModule.forChild(appRoutes) ,它將轉到http://127.0.0.1:4200/public,但不會顯示“ public works!”,因此我認為出了點問題與appRoutes。

我發現了問題,模塊中使用的所有組件都應在聲明設置中。

因此,public.module.ts中的聲明應為:

declarations: [PublicComponent]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM