2017-01-16 3 views
3

Ich habe eine Routing-Konfiguration, wie unten im Codefragment gegeben -Ersetzen geordneten Ansicht Router Ansicht mit Kindern in Angular 2

export const projectRoutes: Routes = [ 
    { 
    path: 'projects', component: ProjectComponent, canActivate: [AuthGuard] 
    }, 
    { 
    path: 'project/:id', component: ProjectDetailsComponent, canActivateChild: [AuthGuard], 
    children: [ 
     { path : 'adduser', component: AddMemberComponent, canActivate: [AuthGuard]} 
    ] 
    } 
] 

hier die Moduldefinition wird (dies ist übrigens nicht die Wurzel-Modul, das ist ein Unter/Funktionsmodul) -

//imports are removed to maintain sanity 

@NgModule({ 
    imports: [ 
    CommonModule, 
    ProjectRoutingModule 
    ], 
    declarations: [routableComponents], 
    providers: [ProjectService] 
}) 
export class ProjectModule { } 

Und die Projektdetails HTML -

<div *ngIf="project" class="row justify-content-md-center"> 
    <!-- project details here --> 
</div> 
<router-outlet> 
</router-outlet> 

Jetzt möchte ich show add-user form (Benutzer hinzufügen), wenn der Benutzer auf diese Route geht - /project/{id}/adduser.

Da die Route adduser Kinder von project/:id ist, wird in router-outlet unter diesem HTML geladen. Ich möchte jedoch dieselbe Ansicht ersetzen und sie nicht unter bereits gerendertem HTML anzeigen. Wie im Bild Schlag gegeben -

Existing setup

Was ich erreichen will -

enter image description here

Gibt es eine Möglichkeit, es zu erreichen?

+0

aktualisieren Sie Ihren Post mit Moduldefinitionscode. – Aravind

+0

@Aravind - hinzugefügt :-) –

Antwort

0

Sie können prüfen, adduser vom Status Kind zu entfernen:

export const projectRoutes: Routes = [ 
    { 
    path: 'projects', component: ProjectComponent, canActivate: [AuthGuard] 
    }, 
    { 
    path: 'project/:id', component: ProjectDetailsComponent, canActivateChild: [AuthGuard]}, 

     { path : 'projects/:id/adduser', component: AddMemberComponent, canActivate: [AuthGuard]} 

    } 
] 
+0

Sicher, kann das tun, aber ist das der richtige Weg, um es zu erreichen? –

+0

AFAIK, ja. Ich kann hier nichts hacken sehen. – coder

+0

und wie kann ich Benutzer zu dieser Route durch HTML navigieren? –

0

ProjectDetailsComponent Vorlage der <router-outlet></router-outlet> so enthalten, dass Kinder dort wiedergegeben werden können.

+0

Was ist, wenn ich nur den Inhalt vom übergeordneten ' ersetzen möchte? –

+0

dann muss Route in Router-Konfiguration auf der Stammebene zugeordnet sein, was Sie rendern möchten ... wenn Sie auf AddMember Schaltfläche klicken .... Sie können im Code zu dieser Route navigieren. Auch gibt es ein Konzept von benannten Router Outlet (sekundäre Routen), die Sie versuchen können, zu implementieren. – Vishal