2016-10-25 5 views
0

https://plnkr.co/edit/x97F91xLv3yNcOhvTwBm?p=previewAngular2 Названный маршрутизатор не работает

в plunker выше в данный момент, нажав на Page1 или Page2 в меню загрузки содержимого в неназванной Router Outlet. Как загрузить их в именованный маршрутизатор (contentOutlet)?

я попытался добавить следующее, но он ломает страницу с

в app.module.ts

{ path: 'Page1', component: Page1Component, outlet:'contentOutlet'}, 

{ path: 'Page2', component: Page2Component, outlet:'contentOutlet'} 

ответ

0

Проблема этого кода

{ path: '', redirectTo: 'Page1', pathMatch: 'full'}, 
{ path: 'Page1', component: Page1Component, outlet="contentOutlet"}, 
{ path: 'Page2', component: Page2Component, outlet="contentOutlet"}` 

является то, что вы не можете загрузить, например, Page1 в именованную розетку, потому что вам нужно загрузить ровно один компонент в неназванный router-outlet. Этот выход не должен быть пустым. Если вы перенаправляете корневой путь '' непосредственно к компоненту, который хотите загрузить в другой розетке, нет никакого компонента для неназванного router-outlet.

Таким образом, вы должны создать родительский компонент для Pages, который всегда загружается в неназванный router-outlet, как это:

{ path: '', component: PagesComponent, pathMatch: 'full'}, 
{ path: 'Page1', component: Page1Component, outlet: 'contentOutlet'}, 
{ path: 'Page2', component: Page2Component, outlet: 'contentOutlet'} 

Ваши выходы остаются в AppComponent.

Если вы хотите загрузить Page1 в contentOutlet вы должны сделать это, как это из шаблона в AppComponent:

<a [routerLink]="['/', {outlets: {'contentOutlet': 'Page1' }}]" routerLinkActive="active" >Page1</a> 

Так что теперь маршрутизатор распознает, что должен быть выход на / -root Путь вашего приложения, который называется contentOutlet. И он загружает Page1-Компонент в розетку.

Вот исправленный plunker: https://plnkr.co/edit/MXi8p7rr15Bul1US9qbc?p=preview

+0

Его довольно запутанный, вы рекомендуете некоторый учебник или ссылку, чтобы прочитать на это? У меня есть обновление плункера для загрузки меню в левой колонке. Теперь, когда я нажимаю меню Page1child1, я хочу отображать содержимое этой страницы на странице содержания, что мне нужно сделать здесь. Вид на навигацию как на sears.com. 1) Нажмите «Меню» в заголовке, и он обновит подменю слева. . 2) щелкните по подменю слева и загрузите содержимое в правую сторону. –

+0

Эта статья [http://onehungrymind.com/ named-router-outlets-in-angle-2 /) может оказаться очень полезным для входа в именованные маршрутизаторы. –

+0

Спасибо за помощь здесь. Я немного запутался. Кажется, что суть вашего решения состоит в том, чтобы добавить ''/'', то есть изменить' {outlets: {' contentOutlet ':' Page2 '}} 'to''/', {outlets: {' contentOutlet ':' Page2 '}} '. Тем не менее, я открыл ваш плунжер, и он работает в обоих направлениях. Я изучаю [это демо] (https://angular.io/resources/live-examples/router/ts/plnkr.html), в котором маршрут заполняет только названную «всплывающую» розетку. Он работает в демо, но не в [моем его принятии] (https://great-big-angular2-example.herokuapp.com/heroes/crisis-center) в более крупное приложение. –

Смежные вопросы