我们的项目使用以下路由结构:
{ path: 'course/:id',
component: PlayerComponent,
},
{
path: 'course/:id/play/:id_chapter',
component: PlayerComponent,
},
基本上我们希望同一个组件能够处理你登陆课程时的情况以及你在里面演奏单个章节时的情况。
我们面临的问题是,在第一个和第二个路径之间导航,组件被破坏(构造函数,ngOnInit,ngOnDestroy被调用,组件的所有属性都被丢失)。
我们尝试使用儿童路线方法,使得个别章节路线成为主要路线的儿童路线,这在某种程度上起作用 - 我们能够从主要路线导航到章节路线,但是如果你直接降落在章节路线上,Angular会沿着没有为此路线定义任何组件的行引发错误(我猜Angular不会从最内层的孩子遍历路由树,直到找到要渲染的组件)
如果我们跟进最后一种方法并为父路由和子路由定义相同的组件,它将失败并出现不同的错误。