Fab*_*oli 5 angular-routing angular angular-auxiliary-routes
我正在尝试在主路由器插座内使用辅助路由器插座.
app.routing
export const appRoutes: Routes = [
{ path: '', component: HomeComponent },
{
path: 'page',
loadChildren: () => new Promise(function (resolve) {
(require as any).ensure([], function (require: any) {
resolve(require('../pages/page.module').default);
});
})
}
];
Run Code Online (Sandbox Code Playgroud)
app.component
@Component({
template: `<h1>My App!</h1>
<a [routerLink]="['/page']">Page</a>
<router-outlet></router-outlet>`
})
Run Code Online (Sandbox Code Playgroud)
page.module
@NgModule({
imports: [
CommonModule,
RouterModule.forChild([
{
path: '',
component: PageComponent
},
{
path: 'auxpath',
component: AuxComponent,
outlet: 'auxoutlet'
}
])
],
declarations: [PageComponent],
exports: [PageComponent]
})
export default class PageModule {}
Run Code Online (Sandbox Code Playgroud)
page.component
@Component({
template: `Page <router-outlet name="auxoutlet"></router-outlet>`
})
Run Code Online (Sandbox Code Playgroud)
aux.component
@Component({
template: `Aux`
})
Run Code Online (Sandbox Code Playgroud)
错误 / page /(auxoutlet:auxpath)将看到Page组件,但出现此错误:
EXCEPTION: Uncaught (in promise): Error: Cannot find the outlet auxoutlet to load 'AuxComponent'
Run Code Online (Sandbox Code Playgroud)
Rex*_*Rex 12
我尝试使用延迟加载和命名路由器插座,并发现以下事实:
''.他们不会像空路径的孩子一样工作.它可能会很快修复.<router-outlet>其子组件将是辅助路由和其他子路由.(可能会很快修复,与第1点相同.)您可以通过以下方式加载指定的插座:url(parentRoute/outletName:['outletPath', param]),或使用路由器链接指令([routerLink]=['parentRoutes',{outlets: {outletName:['outletPath', param]}}]或者以编程方式(this.router.navigate(['parentRoutes',{outlets: {outletName:['outletPath', param]}}])
要删除指定的插座,请outlets: {outletName: null}在url,routerLink或代码中指定.
由于一个错误(将空路径子路径重定向到命名路由不起作用),目前没有优雅的方法来默认加载命名路由,以后可以使用上述方法将其删除.它可能会很快修复.但是,您可以使用虚拟组件创建一个空路径,并在其构造函数中导航到加载默认命名路由的URL.或者您可以在父组件中执行此操作.
特别感谢布兰登
我使用此路由配置解决了:
RouterModule.forChild([
{
path: 'wrap',
component: PageComponent,
children: [
{
path: 'auxpath',
component: AuxComponent,
outlet: 'auxoutlet'
}
]
},
{
path: '',
component: PageComponent
}
])
Run Code Online (Sandbox Code Playgroud)
这个网址有效:
/page/wrap/(auxoutlet:auxpath)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4636 次 |
| 最近记录: |