2016-12-24 44 views
2

我想了解Angular2中的路线。 This是这个链接。 我的问题是它找不到\heroes\hero\:id路由,它是在heroes-routing-module中创建的。每次加载主页(\ heroes)时,都会显示page not found文本,该文本来自页面未找到页面{ path: '**', PageNotFoundComponent}。以下是相关文件的摘录(不是带有导入和导出行的完整代码)。Angular2无法找到功能模块路线

英雄路由模块

const heroesRoutes: Routes = [ 
    { path: 'heroes', component: HeroesComponent }, 
    { path: 'hero/:id', component: HeroDetailComponent } 
]; 

@NgModule({ 
    imports: [ 
    RouterModule.forChild(heroesRoutes) 
    ], 
    exports: [ 
    RouterModule 
    ] 
}) 

英雄模块

@NgModule({ 
    imports: [ 
    HeroRoutingModule, 
    SharedModule 
    ], 
    declarations: [ 
    HeroesComponent, 
    HeroDetailComponent, 
    HeroSearchComponent 
    ], 
    providers: [ 
    HeroService 
    ] 
}) 

APP模块

@NgModule({ 
    imports: [ 
    BrowserModule, 
    HttpModule, 
    InMemoryWebApiModule.forRoot(InMemoryDataService), 
    AppRoutingModule, 
    HeroesModule, 
    SharedModule 
    ], 
    declarations: [ 
    AppComponent, 
    DashboardComponent, 
    CrisisListComponent, 
    PageNotFoundComponent 
    ], 
    bootstrap: [ AppComponent ] 
}) 

应用路线

import { NgModule }    from '@angular/core'; 
import { RouterModule, Routes } from '@angular/router'; 
import { DashboardComponent } from './dashboard.component'; 
import { CrisisListComponent } from './crisis/crisis-list.component'; 
import { PageNotFoundComponent } from './not-found.component'; 

const routes: Routes = [ 
    { path: 'dashboard', component: DashboardComponent }, 
    { path: 'crisis-center', component: CrisisListComponent }, 
    { path: '', redirectTo: '/heroes', pathMatch: 'full' }, 
    { path: '**', component: PageNotFoundComponent } 
]; 

@NgModule({ 
    imports: [ RouterModule.forRoot(routes) ], 
    exports: [ RouterModule ] 
}) 

我已经检查了所有的文件名进口的错字,所以我排除加在这里。控制台中没有错误,我正在使用Angular 2.1。 如果需要其他信息,请发表评论。

+0

尝试在* App模块*中将'RouterModule'添加到'imports'并将其导入到上面 –

回答

6

那是因为你app.module进口是这样的:

imports: [ 
    BrowserModule, 
    HttpModule, 
    InMemoryWebApiModule.forRoot(InMemoryDataService), 
    AppRoutingModule, //<-- after this it won't be finding the routes below because of the wildcard route 
    HeroesModule, 
    SharedModule 
    ] 

所以使用AppRoutingModule作为最后的路由模块:

imports: [ 
    BrowserModule, 
    HttpModule, 
    InMemoryWebApiModule.forRoot(InMemoryDataService), 
    HeroesModule, 
    AppRoutingModule, 
    SharedModule 
    ] 

进口秩序事情,当谈到路由,angular2路由系统从上到下。

相关问题