我目前在一家大公司工作,我们最近将应用程序从Angular 2升级到了Angular9。
我们现在面临的最大问题是路由。我们使用自定义的停用方法为路由器出口连接。此方法类似于默认方法,但是我们添加了一个超时,因此我们可以使所有屏幕切换动画在结束上一条路线之前完成。
RouterOutlet.prototype.deactivate = function() {
if (this.isActivated && !this.component.navAnimation) {
let destroy = this.activated.destroy;
let activated = this.activated;
activated.destroy = () => {
setTimeout(() => {
destroy.call(activated);
}, 600);
};
}
return deactivate.apply(this, arguments);
};
问题在于,这似乎导致呈现子路线时出现问题。
这是遇到问题的演示路由文件
path: 'parent-path'
component: ParentComponent
children: [
{
path: '',
component: ChildHome
},
{
path: 'details',
component: Details
}
]
我在父组件中有一个路由器插座。
此代码适用于Angular 2,但是现在当我们导航到父路径/详细信息时,URL将正确切换(路由跟踪也可以找到路由),但将显示家庭子路由。它与该路由文件无关,特别是因为此问题在许多应用程序中均会发生。
如果我注释超时,动画将看起来很丑陋,但是可以加载子级。
我没有收到任何错误。
如果有人知道为什么此超时导致子路由(不是“默认子”的子路由)无法加载,那就太好了!谢谢!