在角度2中,有一种方法可以使导航路线保持活动状态,即使它没有导航到?我的目的是试图将webgl画布放入角度2路线。现在默认情况下,只要路由导航到它,就会初始化组件并加载所有需要的资源,然后在导航时它会破坏组件并从Dom中删除视图。当使用webgl时,这会导致2个问题,主要的一个是只允许特定数量的webgl实例,否则会导致显卡过载。因此,如果路由被多次导航和远离,那么有可能达到限制,因为它每次导航到路径时都会创建一个新的webgl实例。此外,webgl通常需要复杂的变量和资源,能够保持这些变量的存活并因此不必再次加载,在某些情况下甚至可以在路径之外使用它们,这将是很好的。
所以我提出的解决方案是让组件保持活动但隐藏,以便资源和变量保持活动有没有办法做到这一点?
答案 0 :(得分:3)
我认为您可以尝试使用routerCanReuse
界面及其@Component({
selector: 'my-cmp',
template: `
(...)
`
})
class MyCmp implements CanReuse, OnReuse {
routerCanReuse(next: ComponentInstruction, prev: ComponentInstruction) {
return true;
}
}
。如果组件实现此方法并返回true,则组件不会被销毁,并且相同的组件实例将跨路径重用:
(defn- update-fields
[cell-states]
(doseq [[idx state] (map-indexed vector cell-states)
:let [field (select-field idx)]]
(config! field :icon (icons/cell-icons state))))
(defn- update-board
[snapshot face]
(do
(change-smiley face)
(update-fields (:cells snapshot))
(repaint! ui)))