2017-04-19 2 views
1

Ich benutze Winkel 4.0.2. Ich würde gerne ein wiederverwendbares Layout-Modul für meine Apps erstellen, das aus einem HTML-Layout mit Navbar, Sidebar etc. bestehen würde. Template enthält Router-Outlet, aber ich weiß nicht, wie man Routen von außen injiziert bekommt.So injizieren Routen zu externen Winkelmodul

Hier ist, was ich versuche:

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

dann in application.module würde ich importieren Moduls (anwendungsspezifische) Routen:

LayoutModule.forRoot(PagesRoutes) 

Leider funktioniert es nicht. Meine Strecken sind nicht registriert, und ich bekomme 404.

Allerdings, wenn ich es zu ändern:

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

}) 
export class LayoutModule { 
} 

routet dann gut funktionieren, wenn sie nicht als Abhängigkeit nicht injiziert werden.

Irgendwelche Ideen, wie man das macht?

Antwort

0

Ich konnte einen Workaround finden, der das Problem löst.

Auf meiner Client-Anwendung habe ich eine dünne Hülle um externe LayoutModule

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

}) 
export class LayoutWrapperModule { 
} 

Injizieren Routen auf diese Weise funktioniert.

Verwandte Themen