Est-il possible d'avoir plusieurs routeur-prise dans le même modèle?
Si oui, comment configurer les routes?
J'utilise angular2 beta.
oui, vous pouvez, mais vous devez utiliser le routage aux. vous devrez donner un nom à votre routeur-prise:
<router-outlet name="auxPathName"></router-outlet>
et configurez votre route config:
@RouteConfig([
{path:'/', name: 'RetularPath', component: OneComponent, useAsDefault: true},
{aux:'/auxRoute', name: 'AuxPath', component: SecondComponent}
])
regardez cet exemple: http://plnkr.co/edit/JsZbuR?p=preview Aussi cette vidéo: https://www.youtube.com/watch?v=z1NB -HG0ZH4 & feature = youtu.be
La mise à jour pour les routes Aux RC.5 a un peu changé: dans la prise de votre routeur, utilisez un nom:
<router-outlet name="aux">
Dans votre configuration de routeur:
{path: '/auxRouter', component: secondComponentComponent, outlet: 'aux'}
Vous pouvez avoir plusieurs routeur-prise dans le même modèle en configurant votre routeur et en fournissant un nom à votre routeur-prise. Pour ce faire, procédez comme suit.
L’avantage de l’approche ci-dessous est qu’il est possible d’éviter une URL sale. Par exemple:/home (aux: login), etc.
En supposant que vous chargez appComponent à la charge.
app.component.html
<div class="layout">
<div class="page-header">
//first outlet to load required component
<router-outlet name='child1'></router-outlet>
</div>
<div class="content">
//second outlet to load required component
<router-outlet name='child2'></router-outlet>
</div>
</div>
Ajoutez ce qui suit à votre routeur.
{
path: 'home', // you can keep it empty if you do not want /home
component: 'appComponent',
children: [
{
path: '',
component: childOneComponent,
outlet: 'child1'
},
{
path: '',
component: childTwoComponent,
outlet: 'child2'
}
]
}
Maintenant, lorsque/home est chargé, appComponent sera chargé avec le modèle alloué, puis le routeur angular vérifiera la route et chargera le composant enfants dans la sortie de routeur spécifiée en fonction du nom.
Comme ci-dessus, vous pouvez configurer votre routeur pour avoir plusieurs routeur-prise dans le même itinéraire.
La syntaxe des routes auxiliaires a changé avec le nouveau routeur RC.3.
Il existe quelques problèmes connus avec les itinéraires Aux mais un support de base est disponible.
Vous pouvez définir des itinéraires pour afficher les composants dans un nom <router-outlet>
nommé.
Route config
{path: 'chat', component: ChatCmp, outlet: 'aux'}
Routeur nommé
<router-outlet name="aux">
Naviguer aux routes
this._router.navigateByUrl("/crisis-center(aux:chat;open=true)");
Il semble que la navigation aux routes auxiliaires de routerLink n’est pas encore prise en charge.
<a [routerLink]="'/team/3(aux:/chat;open=true)'">Test</a>
<a [routerLink]="['/team/3', {outlets: {aux: 'chat'}}]">c</a>
Pas encore essayé moi-même
Voir également routeur angulaire2 dans un composant
RC.5 routerLink DSL (identique au paramètre createUrlTree
) https://angular.io/docs/ts/latest/api/router/index/Router-class.html#!#createUrlTree-anchor)
<a [routerLink]="[{ outlets: { list:['streams'], details:['parties'] } }]">Link</a>
<div id="list">
<router-outlet name="list"></router-outlet>
</div>
<div id="details">
<router-outlet name="details"></router-outlet>
</div>
`
{
path: 'admin',
component: AdminLayoutComponent,
children:[
{
path: '',
component: AdminStreamsComponent,
outlet:'list'
},
{
path: 'stream/:id',
component: AdminStreamComponent,
outlet:'details'
}
]
}
Oui, vous pouvez comme dit par @tomer ci-dessus. Je veux ajouter un point à la réponse de @tomer.
router-outlet
où vous voulez charger la deuxième vue de routage dans votre vue. (aux routage angular2.)Dans le routage angular2, quelques points importants sont ici.
pour plus d'informations, lisez ici et ici.
import {RouteConfig, AuxRoute} from 'angular2/router';
@RouteConfig([
new AuxRoute({path: '/home', component: HomeCmp})
])
class MyApp {}
Il semble y avoir un autre moyen (plutôt compliqué) de réutiliser le routeur-prise dans un modèle:
https://stackblitz.com/edit/router-outlet-twice-with-events
Le routeur-prise est enveloppé par un ng-template. Le modèle est mis à jour en écoutant les événements du routeur. À chaque événement, le modèle est échangé et à nouveau échangé avec un espace réservé vide. Sans cette "permutation", le modèle ne serait pas mis à jour.
Cela ne semble toutefois pas être une approche recommandée, car l’échange de deux modèles semble un peu compliqué.