Angular2 RC5 |路由器:无法匹配任何路由

时间:2016-09-13 17:37:45

标签: javascript angular typescript module router

我目前正在使用Angular 2 - RC5和路由器3.0.0 RC1。这似乎是一个非常常见的错误,但我找不到任何有效的解决方案。我的组件结构包括一个“BasicContentComponent”,它包括主菜单和标题以及子路径内容的辅助插座。 “BasicContentComponent”来自共享模块,子路由组件来自该子路由的特定模块。

我的路线配置如下所示

export const routeConfig = [
    {
        path: 'home',
        component: BasicContentComponent,
        children: [
            {
                path: '',
                component: HomeContainer,
                //canActivate: [IsAuthenticatedGuard],
                outlet: 'content', // REMOVE THIS LINE
                //resolve: {
                //    homeState: HomeResolver
                //}
            }
        ]
    }
];

如果删除“children”定义,我可以加载“/ home”,但是使用此配置我会收到错误。

以下是模块配置,因为问题也可能存在。

app.module.ts

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,

    RouterModule.forRoot(routeConfig), //see above
    SharedModule.forRoot(),
    HomeModule
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

shared.module.ts

import { Store, StoreModule } from '@ngrx/store';

@NgModule({
    imports: [
        RouterModule,
        CommonModule,
        ...

        StoreModule.provideStore(reducers),
    ],
    declarations: [
        BasicContentComponent,
        ...
    ],
    exports: [BasicContentComponent, ...],

})
export class SharedModule {

    static forRoot() : ModuleWithProviders {
        return {
            ngModule: SharedModule,
            providers: [
                MdIconRegistry,
                ...
                IsAuthenticatedGuard,
                ...
                HomeResolver
            ]
        }
    }
}

home.module.ts

@NgModule({
    imports: [CommonModule, SharedModule],
    declarations: [
        HomeContainer,
        HomeComponent
    ],
    exports: [HomeContainer]
})
export class HomeModule { }

我收到以下错误

  

browser_adapter.js:84 EXCEPTION:错误:未捕获(在承诺中):错误:   无法匹配任何路线:'home'

知道问题可能是什么?是路由配置还是模块问题?感谢

修改 我忘记了模板:

app.component.html

<div>
  <router-outlet></router-outlet>
</div>

基本-content.component.html

<md-sidenav-layout fullscreen>
  <md-sidenav mode="side" align="start" [opened]="isOpened$ | async" color="warn">
    <mainnav-container></mainnav-container>
  </md-sidenav>

  <page-header-container></page-header-container>

  <div class="app-content">
    <router-outlet name="content"></router-outlet> // REMOVE NAME
  </div>

</md-sidenav-layout>

1 个答案:

答案 0 :(得分:1)

我得到了Gitter的帮助。如果我删除&#34;名称&#34;路由器插座的属性,也将它从routerConfig中删除,一切按预期工作。我不完全理解为什么我必须删除它以及路由器究竟如何找到正确的插座 - 因为插座是嵌套的,所以它有点意义 - 但我会稍后在指定插座的文档时更新我的​​答案更完整。

感谢Gitter的@DzmitryShylovich。