繁体   English   中英

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

[英]Angular2 RC5 | Router: Cannot match any routes

我目前在路由器 3.0.0 RC1 上使用 Angular 2 - RC5。 这似乎是一个非常常见的错误,但我找不到任何有效的解决方案。 我的组件结构包括一个“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 {}

共享模块.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 例外:错误:未捕获(承诺):错误:无法匹配任何路由:'home'

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

编辑我忘记了模板:

应用程序组件.html

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

基本内容.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>

我在 Gitter 上得到了帮助。 如果我删除路由器插座的“名称”属性并将其从 routerConfig 中删除,则一切正常。 我不完全理解为什么我必须删除它以及路由器如何找到正确的插座 - 因为插座是嵌套的,所以有点道理 - 但我会在稍后更新我的答案,当命名插座的文档更多时完全的。

感谢 Gitter 上的 @DzmitryShylovich。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM