1

我正在使用角度 4.0.2。我想为我的应用程序创建一个可重用的布局模块,该模块由一些带有导航栏、侧边栏等的 html 布局组成。模板包含路由器插座,但我不知道如何从外部注入路由。

这是我正在尝试的:

@NgModule({
    imports: [
        CommonModule,
        FormsModule,
        RouterModule
    ],
    declarations: [Layout, Sidebar, Navbar]
})
export class LayoutModule {
    static forRoot(routes): ModuleWithProviders {
        return {
            ngModule: LayoutModule,
            providers: [provideRoutes(routes)]
        }
    }
}

然后在 application.module 我将导入提供(特定于应用程序)路由的模块:

LayoutModule.forRoot(PagesRoutes)

不幸的是,它不起作用。我的路线没有注册,我得到 404。

但是,当我将其更改为:

@NgModule({
    imports: [
        CommonModule,
        FormsModule,
        RouterModule
    ],
    declarations: [Layout, Sidebar, Navbar],
    providers: [provideRoutes(PagesRoutes)]

})
export class LayoutModule {
}

然后路由工作正常,除了它们没有作为依赖注入。

任何想法如何做到这一点?

4

1 回答 1

0

我能够找到解决问题的解决方法。

在我的客户端应用程序上,我有一个围绕外部 LayoutModule 的薄包装器

@NgModule({
    imports: [
        RouterModule,
        LayoutModule
    ],
    providers: [provideRoutes(PagesRoutes)]

})
export class LayoutWrapperModule {
}

以这种方式注入路由是有效的。

于 2017-04-27T12:48:14.020 回答