在我正在构建的Angular 5应用程序中,我有一个侧面菜单和主要内容菜单 .

左侧的两个菜单项使用不同的路径数据加载相同的组件 .

默认情况下,Angular使用相同的组件实例来渲染它们 . 因此, ngOnInit() 将只被调用一次(一个实例) .

要呈现的组件包含子组件(更改检测设置为 OnPush ) . 子组件接收数据 @Input()

单击第一个菜单项时,将正确呈现数据 . 单击第二个菜单项时, old data is still showing 一旦新数据从服务器到达,它就会被渲染 .

提到的行为是正常的 . 父组件中的数据没有更改 yet 因此未更改子组件 @Input() ,因此未触发子组件的 ngOnChange() .

当数据从服务器到达时,父组件将更新其数据,因此子组件 @Input() 将相应更新,因此将在子组件上触发 ngOnChange() . 因此,Angular将更新用于UI呈现 .

这里的目标是在等待新数据到达之前导航到同一组件,预先重置数据 .

那怎么可行?

谢谢