cle*_*toy 3 router-outlet angular
我有以下模板AppComponent:
<div>
<div>
<router-outlet name="menu"></router-outlet>
</div>
<div>
<router-outlet name="main"></router-outlet>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想在两种情况下使用这个模板:
/page1,我希望menuoutlet 包含Menu1Component和mainoutlet 包含Main1Component/page2,我希望menuoutlet 包含Menu2Component和mainoutlet 包含Main2Component我不明白儿童和命名插座是如何工作的。我在模块导入中的路由应该是什么?
我使用 Angular 5。
对此的总体方法是在您想要的路线上进行模式匹配,并为每个出口提供空的子路线。
格式(带括号、花括号和缩进)一目了然有点难以阅读,所以我将在这里隔离每条路线并解释一下......
假设您在/page1:
const pageOneRoutes = {
path: 'page1',
};
Run Code Online (Sandbox Code Playgroud)
此路径有两个子路由(每个出口都有自己的子路由)。这两个子路径都是“空”路径,因为您希望子路径page1自身匹配:
const pageOneRoutes = {
path: 'page1',
children: [
{ path: '', outlet: 'menu', component: Menu1Component },
{ path: '', outlet: 'main', component: Main1Component }
]
};
Run Code Online (Sandbox Code Playgroud)
然后,您只需为/page2要加载的其他组件重复此过程。
const pageTwoRoutes = {
path: 'page2',
children: [
{ path: '', outlet: 'menu', component: Menu2Component },
{ path: '', outlet: 'main', component: Main2Component }
]
};
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看 Angular 路由教程的这一部分,该教程使用此方法在子路由中进行模式匹配:https : //angular.io/guide/router#child-route-configuration。
整个事情可能看起来像这样:
const ROUTES: Routes = [
{
outlet: 'primary',
path: '',
children: [
{
path: 'page1',
children: [
{
path: '',
outlet: 'menu',
component: Menu1Component
},
{
path: '',
outlet: 'main',
component: Main1Component
}
},
{
path: 'page2',
children: [
{
path: '',
outlet: 'menu',
component: Menu2Component
},
{
path: '',
outlet: 'main',
component: Main2Component
}
]
}
]
]
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |