2017-01-16 2 views
3

У меня есть настройки маршрутизации, как указано в фрагменте кода ниже -Заменить родительский вид вид маршрутизатора с детьми в угловыми 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]} 
    ] 
    } 
] 

Вот определение модуля (это не корневой модуль Кстати, это суб/модуль функция) -

//imports are removed to maintain sanity 

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

И детали проекта HTML является -

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

Теперь я хочу показать форму добавленного пользователя, когда пользователь перейдет на этот маршрут - /project/{id}/adduser.

Поскольку маршрут adduser является дочерним элементом project/:id, он загружается в router-outlet под тем HTML. Тем не менее, я хочу заменить один и тот же вид и не показывать его под уже обработанным HTML. Как дано в картине удара -

Existing setup

То, что я хочу достичь -

enter image description here

Есть ли способ, чтобы достичь этого?

+0

обновите свой пост с помощью кода определения модуля. – Aravind

+0

@Aravind - добавил :-) –

ответ

0

Вы можете рассмотреть возможность удаления AddUser из состояния ребенка:

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

Конечно, может это сделать, но это правильный способ его достижения? –

+0

AFAIK, да. Здесь я не вижу никакого взлома. – coder

+0

и как я могу перемещаться по этому маршруту через HTML? –

0

шаблон ProjectDetailsComponent должен содержать <router-outlet></router-outlet> так, что дети могут быть оказаны там.

+0

Что делать, если я хочу только заменить содержимое родительского ''? –

+0

, тогда должен быть маршрут в конфигурации маршрутизатора на уровне корня, сопоставленный с тем, что вы хотите визуализировать ... при нажатии кнопки addMember ... вы можете перемещаться по коду на этот маршрут. Также существует концепция именованного маршрутизатора (вторичные маршруты), который вы можете попытаться реализовать. – Vishal