jed*_*ion 6 angular-routing router-outlet angular6
主要问题:有没有办法显示到父路由器出口的子路由?
请考虑Angular.io路由器指南中的这个示例。
主要路线片段:
const appRoutes: Routes = [
...
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [AuthGuard]
},
{
path: 'crisis-center',
loadChildren: 'app/crisis-center/crisis-center.module#CrisisCenterModule',
data: { preload: true }
},
....
];
Run Code Online (Sandbox Code Playgroud)
主要组件片段:
@Component({
selector: 'app-root',
template: `
<h1 class="title">Angular Router</h1>
<nav>
<a routerLink="/crisis-center" routerLinkActive="active">Crisis Center</a>
<a routerLink="/superheroes" routerLinkActive="active">Heroes</a>
<a routerLink="/admin" routerLinkActive="active">Admin</a>
...
</nav>
<router-outlet></router-outlet>
`
})
Run Code Online (Sandbox Code Playgroud)
危机中心路线片段:
const crisisCenterRoutes: Routes = [
{
path: '',
component: CrisisCenterComponent,
children: [
{
path: '',
component: CrisisListComponent,
children: [
{
path: ':id',
component: CrisisDetailComponent,
...
},
{
path: '',
component: CrisisCenterHomeComponent
}
]
}
]
}
];
Run Code Online (Sandbox Code Playgroud)
CrisesListComponent 片段:
@Component({
template: `
<ul class="items">
<li *ngFor="let crisis of crises$ | async"
[class.selected]="crisis.id === selectedId">
<a [routerLink]="[crisis.id]">
<span class="badge">{{ crisis.id }}</span>{{ crisis.name }}
</a>
</li>
</ul>
<router-outlet></router-outlet>
`
})
Run Code Online (Sandbox Code Playgroud)
CrisisDetailComponent 片段:
@Component({
template: `
<div *ngIf="crisis">
<h3>"{{ editName }}"</h3>
...
</div>
`
})
Run Code Online (Sandbox Code Playgroud)
该路由器的输出是这样的:
所以。我想说的是,当您单击Dragon Burning Cities时,为什么不将其显示在 CrisesListComponent 级别上,而不是将其显示在下面?
我能想到的就是在CrisesListComponent中使用*ngIf:
@Component({
template: `
<ul class="items" *ngIf="a list is selected hide this!!!">
<li *ngFor="let crisis of crises$ | async"
[class.selected]="crisis.id === selectedId">
<a [routerLink]="[crisis.id]">
<span class="badge">{{ crisis.id }}</span>{{ crisis.name }}
</a>
</li>
</ul>
<router-outlet></router-outlet>
`
})
Run Code Online (Sandbox Code Playgroud)
是否想将子路由器设置为此父路由出口上的显示?
谢谢。我希望我的问题说清楚了。
我认为您可以通过将名称添加到<router-outlet>选择器并将具有该名称的出口属性添加到子路由中。HTML:
<router-outlet name="test"></router-outlet>
Run Code Online (Sandbox Code Playgroud)
子路线模块:
path: '',
component: CrisisCenterComponent,
outlet: "test"
Run Code Online (Sandbox Code Playgroud)
尝试一下,您可能会遇到这个孩子的嵌套路线的一些问题。
| 归档时间: |
|
| 查看次数: |
4837 次 |
| 最近记录: |