I want to display different views by child routes. For Example I want my template to hold multiple router-outlet
Version: @angular/router": "3.0.0-alpha.7"
<router-outlet></router-outlet>
<router-outlet name="route1"></router-outlet>
<router-outlet name="route2"></router-outlet>
In my router i want to specify the name of router.
As i saw in a question, the solution for this is to specify AuxRoute, but AuxRoute does not exist in this version.
{path: '/', component: HomeComponent, as: 'Home'},
new AuxRoute({path: '/route1', component: Route1Component, as: 'Route1'}),
new AuxRoute({path: '/route2', component: Route2Component, as: 'Route2'})
While on angular 2 official website i found that it is possible to have multiple router, but i can't find any resource.
https://angular.io/docs/ts/latest/guide/router.html
A template may hold exactly one unnamed <router-outlet>. The router supports multiple named outlets, a feature we'll cover in future.
You can have multiple router-outlet in same template by configuring your router and providing name to your router-outlet, you can achieve this as follows.
There is no limit in angular but there are some best practices of using multiple place one in app.
Yes! We can use multiple router-outlets in same template by configuring our routers and simply add the router-outlet name. You can see in the example.
Current version multiple-named router-outlet
(for angular2 RC.6^) looks like this:
Router configuration
const appRoutes: Routes = [{
path: 'home',
component: HomeComponent,
children: [
{ path: '', component: LayoutComponent },
{ path: 'page1', component: Page1Component, outlet: 'route1' },
{ path: 'page2', component: Page2Component, outlet: 'route2' },
{ path: 'page3', component: Page3Component, outlet: 'route3' }
]
}, {
path: 'articles',
component: ArticlesComponent,
children: [
{ path: '', component: LayoutComponent },
{ path: 'article1', component: Article1Component, outlet: 'route1' },
{ path: 'article2', component: Article2Component, outlet: 'route2' }
]
}, {
path: '',
redirectTo: '/home',
pathMatch: 'full'
}
];
Template within Home component:
<router-outlet></router-outlet>
<router-outlet name="route1"></router-outlet>
<router-outlet name="route2"></router-outlet>
<router-outlet name="route3"></router-outlet>
And a navigation example from root component:
constructor(router: Router) {
router.navigateByUrl('/home/(route1:page1//route2:page2//route3:page3)');
}
Alternative way:
<a [routerLink]="['/home', { outlets: {'route1':['page1'],'route2': ['page2'] }}]"></a>
Here's live Plunker Example
See also
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With