我遇到的问题是,单击主应用程序导航栏路由器链接会导致清除子路由器出口。除非我没有要重新导航到子路线的钩子,否则这不是问题。
应用程序的体系结构是这样的:
app-component.html:
<navbar> // has router-links to parent components to main router-outlet
<router-outlet>
master-component.html
<list> //contains child route-links
<router-outlet>
app-routing:
{ path: 'master',
component: MasterComponent,
children: [
{path: ':id',
component: MasterDetailDetailComponent,
resolve: {data: DataResolver}
}
]
},
* The DataResolver uses a webAPI to get some data.
当我单击主列表上的链接时,效果很好,子路由器出口正确,一切都很好。
但是,当我单击应用程序级别的导航栏“主链接”时,它会清除子路由器出口。子组件的ngOnDestroy()被命中,但父路由未激活。因此,我剩下了主列表和一个清除的详细信息区域。如果我再次单击列表项链接,它将再次很好地填充子路由器出口。
它的确看起来像个挑剔的东西,但是当我单击顶级主组件路径链接时,我希望它自动导航到列表中的第一项。目前,我是在ngOnInit()中进行此操作的,当我第一次进行路由时,它运行良好,但是在这种情况下再也不会调用该方法,因为未禁用父路由。
总结一下: 好像我在主路由已被激活时单击它,便会清除该组件的路由器出口,而不会重新激活路由本身。也许是设计使然?